3

MinGW を使用した Eclipse CDT のプロジェクトで、サード パーティの .lib / .dll ファイル (おそらく Visual Studio でコンパイル) を使用する必要があります。

32 ビット バージョン (32 ビット MinGW を使用) とは動的にリンクできますが、64 ビット バージョン (64 ビット MinGW を使用) とはリンクできません。64 ビット版を実行すると、サードパーティ関数を呼び出すとクラッシュします。

64 ビットを動作させるために何か別のことをする必要がありますか?

ありがとう、アラン

4

2 に答える 2

2

私にとっての解決策は、32ビットビルドの場合は32ビットの.libファイルにリンクし、64ビットビルドの場合は64ビットの.dllファイルにリンクすることでした。

矛盾がどこから来ているのかまだわかりませんので、コメントを歓迎します。

アラン

于 2012-08-29T09:18:43.123 に答える
0

Microsoft Visual Studio は、GCC ( MinGW ) と比較すると、異なる ABI セットを使用します。

これを機能させるのは簡単ではありません。多くのプロジェクトとライブラリは、この問題を解決するためだけに Windows 用の 2 つのバージョンのライブラリを提供しています。1 つは MSVS 用で、もう 1 つは MinGW 用です。

C++ ABI は異なりますが、C 言語と共通の ABI セットがあり、extern Cキーワードを使用して C++ コードをC の方法で使用し、それを C コードとしてリンクしようとするトリックがあります。

あなたの質問への答えはノーです。いくつかのトリックを試すことができますが、これには標準の ABI がなく、これが機能する保証もありません。

ライブラリのソース コードにアクセスして少なくとも何かを試すか、MinGW でライブラリを再コンパイルする必要がある場合は、おそらく Windows でこの問題を知らない開発者に電子メールを送信して、このライブラリの別のバージョン。今あるものは、Visual Studio がなければ役に立ちません。

于 2012-08-28T09:19:53.840 に答える