0

静的リンクに少し問題があります。関数宣言を含むヘッダー ファイルと関数実装を含む .cpp ファイルで構成されるスタティック ライブラリ (libkells.lib) があります。2 つを .o ファイルに正常にコンパイルし、それらから静的ライブラリを構築しました。

次に、.lib ファイル内の関数を呼び出すファイル mcmd.cpp があります。この mcmd.cpp ファイルには、スタティック ライブラリに含まれるヘッダー ファイルが含まれています。このファイル (mcmd.cpp) は .o ファイルに正常にコンパイルされますが、実行可能ファイルにビルドしようとすると、コンパイラは次のようなメッセージを返します。

libkells.lib(libkells.o): 関数 ZNKSt13move_iteratorIPSsE4baseEv 内。__cxa_end_catch への未定義参照、__cxa_begin_catch への未定義参照

などなど、多くのエラーが発生します。これらのエラー メッセージをよく見ると、これらのエラーはinclude/c++/bits/stl_iterator.h. Windowsでmingw 4.7.1を使用しています。私が正しくやっていないのは何ですか?

4

1 に答える 1

1

libstdc++ に対してリンクしていないか、g++ を使用していません。つまり、C++ ドライバーではなく C ドライバーである「gcc」ドライバーは、最後に C++ ランタイムをリンクしません。必要に応じて、-lstdc++ をコマンド ラインに明示的に追加するか、または一般的に間違いなく最初の選択肢として、'g++' を使用することができます。

于 2013-04-03T17:47:18.300 に答える