0

私は、Windows ポートが Visual Studio 2008 Express Edition を使用してコンパイルされる 100% C プロジェクトに取り組んでいます。私のプロジェクトでは、MingGW を使用して静的にコンパイルできた 2 つの Linux ライブラリを使用しています。

私のプロジェクトをこれらのライブラリにリンクしても安全かどうか、またどのような問題が発生する可能性があるかを知りたいです。

Visual Studio で使用しているライブラリをコンパイルできましたが、autoconf に基づいており、プロジェクト ファイルを提供していないため、これはかなりの作業になります。

私はすでにこれこれこれ、およびこれを読みました。

4

1 に答える 1

0

私が心配しているのは「静的にコンパイルされた」部分です。ライブラリがDLLにコンパイルされた場合、それが機能する可能性は十分にありますが、静的にリンクしているため、MINGWコンパイラはランタイムライブラリに関して正しい特定の仮定を行いますが、真である場合とそうでない場合がありますMSVC ランタイム ライブラリ。あるコンパイラでコンパイルされたコードを別のコンパイラの RTL にリンクするように要求していることを考えると、そこには混乱の可能性があります。

あなたが持っている利点の1つは、ここでC++ではなくCを扱っていることです.C++ライブラリでは、これが機能する可能性はありません.Cではそうなる可能性があります. 構造のアライメントがコンパイラ間で同じになるように細心の注意を払い、試してみてください。リンカーがシンボルの欠落について不平を言う場合、RTL が実際にどの程度互換性があるかについての答えが得られます。問題なくリンクできる場合は、試してみてください。

そうは言っても、あなたが言及したのと同様の理由で、GCCでコンパイルされたCライブラリの1つ(MINGWだと思います)を含むC++プロジェクトに取り組んできました。それは機能し、ソフトウェアは問題なく動作し、かなり長い間このように使用されていました. 私たちが抱えていた主な問題は、ライブラリの特定のビルドが MSVC 実行可能ファイルをデバッグ情報にリンクできないことでした。MINGW コマンド ラインを慎重に調整することで、この問題は修正されました。

于 2009-12-23T06:48:31.370 に答える