2011-01-25 14 views
2

私のC++アプリケーションをLinuxからWindows(Visual C++)に移植しようとしています。 私はちょうどあなたがソースコードをスキャンし、潜在的な問題(dirent.hなど)を調べるスクリプト/ツールについて知っています。LinuxからWindowsへのC++ポート

ありがとうございました。

+0

私はそのようなツールは認識していません。この種の作業は通常手作業で行われます。 – karlphillip

+1

@karlphillip:コンパイラは、通常、ヘッダファイルの不足を表示するのに最適です。 'makedepend'や' gcc -MD'を実行するなどして、適切な依存関係ルールが設定されていれば、 'make 'はヘッダファイルが見つからないことさえあるかもしれません。 –

+0

@Benありがとうございます。しかし、私は彼がWindowsツールを指していると仮定しました。 – karlphillip

答えて

3

http://www.mingw.org/wiki/msys又はhttp://www.cygwin.com/

編集:
Cygwinは、本質的にUNIX/POSIXとウィンドウ間(DLLとして実装)互換性層である - コードは不変であるべきであるが、異なるバージョンの間で問題が存在し得ますcygwinのDLL。

Msys + Mingwは、win32で再実装されたUnix/Posixライブラリのサブセットであり、gccコンパイラと必須ビルドツールのポートです。結果として得られるexeは完全にネイティブに動作しますが、複雑なビルド手順にはもっと多くの作業が必要です。

どちらの場合でも、アプリケーションがXを使用している場合は、Xサーバも必要です。これらの両方が提供されます。しかし、あなたがたくさんのグラフィックをやっていて、アプリがQtやwxWidgetsのようなものを使って書かれているのであれば、痛みを感じることができます。

+0

こんにちは、ありがとうございます。 WindowsのネイティブVisual C++に匹敵するmsysとcygwinのパフォーマンスはどうですか? – Petr

+0

@Petr:重要なパフォーマンスへの影響は、InterixなしでWindowsで実装するのが難しい 'fork'を使用するコードだけです。Cygwinを使用する場合の大きな問題は、ユーザーがプログラムを実行する前にcygwinをインストールする必要があるということです。 –

+0

msysにはある種のPOSIXエミュレーションレイヤが含まれていますか? 'fork()'をエミュレートしますか? – ssmir

3

Microsoftは、* nixからWin32へのポートを管理するための「最良の」方法についてMSDNに記載しています。

http://msdn.microsoft.com/en-us/library/y23kc048.aspx

+0

そのページは役に立つリソースを含んでいますが、私はブーストのランダムなページへの2つのリンクをコメント行なしでも理解できません。 ':S' –

+0

@Matteo:基本的には、 :) – James

+0

私もそうだけど、Regressions統計(?!?)にリンクして、1行のコメントを書いていないということは、それを言う最善の方法ではない。 ':)'(私は+1しました) –

1

まず、私は(コンパイラ関連の問題で時間を無駄にしない)問題をMSVSするあらゆる可能性のgccを排除するために、(少なくとも最初は)MinGWのを使用してコンパイルします。

次に、コードをコンパイルし、見つからなかったすべてのインクルードファイルを監視します。これらのヘッダーを含むコードに移動し、Windowsに存在する依存関係であるかどうかを確認します(ただし、インクルードパスにインストールまたは設定されていない)。そうでない場合は、クロスプラットフォームライブラリを使用して、移植不可能なライブラリを置き換えます。一般的なクロスプラットフォームのライブラリには、Boost、OpenGL、SDL、Qtなどがあります(アプリケーションの処理量によって異なります)。それが単なるコマンドラインの「数値処理」ソフトウェアであれば、あなたはBoostで必要なものすべてを見つけることでしょう。

5

最初のツールは、コンパイラと呼ばれます。あなたのプログラムがコンパイルされたかどうかがわかります。

2番目のツールは、テストを実行しているときに実行されます。結果のバイナリが動作するかどうかを伝えます。

あなたは何を探していましたか?水晶球は仕事から救いますか?どんなアプローチをとっていても、始めるのを助けるために何を読むことができようとも、ある時点で(1)物をコンパイルし、(2)それが動作することを確認する必要があります。

関連する問題