web-dev-qa-db-ja.com

MinGW静的ライブラリ(.a)からVisual Studio静的ライブラリ(.lib)へ

C++アプリケーションからExcelスプレッドシートを作成するために xlsLib を使用しようとしています。

問題は、xlsLibをコンパイルするときに、.aファイル(MinGWによって生成されたGCC静的ライブラリ)を提供することです。しかし、私のアプリケーションは、Visual Studioでのみコンパイルされる別のAPI(PhysX)に依存しています。

したがって:GCC静的ライブラリ(xlslib.a)Visual Studio静的ライブラリファイル(xlslib.lib)?

43
user254336

MinGWで生成された静的ライブラリのアーカイブは、一般にVisual C++コンパイラ/リンカーと互換性があります。したがって、Visual Studioのプロジェクトプロパティで.aファイルをリンカー入力に追加することで、これらを直接使用できるようになります。

  1. プロジェクトProperties(Alt-F7)に移動します。
  2. 左側のボックスで、Configuration Properties->Linker->Inputを開きます
  3. 使用する必要があるすべての.aアーカイブのリストを追加します
  4. MinGWのlibgcc.aライブラリも追加する必要がある場合があります

また、混合Cランタイムライブラリproperties of C/C++->Code Generation->Runtime Libraryに関する問題が発生する可能性がありますが、これはMinGWで使用するビルド構成によって異なります。 MinGWからのlibmsvcrt.aに対してリンクする必要がある場合もありますが、多くの場合(ほとんどではないにしても)問題が発生します。

最後に、このMinGWとVisual C++の混合リンクは一般に機能しますが、Cモジュールでは機能しますが、C++では機能しません(私の知る限り)。

34
mloskot

しかし、.aを使用すると、.exeは「デバッグ情報が見つかりません」をデバッグできなくなります。 –エントロピー5月22日12:27

これは、.aライブラリにデバッグに必要なデバッグ情報が含まれていないためです。デバッグする場合は、コンパイル時にデバッグ情報を追加するようコンパイラーに指示する必要があります。 mingwの場合、「-g」を「make」を実行するとCFLAGSに、「make CFLAGS="-g" "

4
gnaggnoyil

ここに私が役に立つとわかった2つのリソースがあります:

[切り抜き、間違ったリンク]

http://old.nabble.com/using-VC%2B%2B-.lib-with-mingw-td23151303.html

編集。探していたリンクが見つかりません。それまでの間、これをチェックしてください: http://www.willus.com/mingw/yongweiwu_stdcall.html

0
laura