2011-11-09 22 views
1

私はC++でいくつかのコード(静的ライブラリ)を書いています(Cの互換性 - 'extern C'などあります)。私のCアプリケーション。静的なC++ライブラリをCライブラリにリンクする

私のCアプリをruningてイムが、私はエラーを得た場合:私は

を想定アーカンソー実行OBJファイルには、-std=c++0x -lstdc++フラグ

undefined symbol: _ZTISt9exception 

C++コードが付きgccでコンパイルされましたそのシンボルはC++ライブラリから直接得られます。私のCアプリを私のコンパイルするとき私はもちろん私のC + +のlibを私のメイクファイルに追加し、コンパイルはエラーなしで終了します。

何が問題なのでしょうか?すべての助けを

THX

+0

[CコードでC++ライブラリを使用する]の複製が可能です(http://stackoverflow.com/questions/199418/using-c-library-in-c-code) –

答えて

1

静的ライブラリはリンクされておらず、アーカイブ内のオブジェクトファイルのコレクションに過ぎません。 libxxx.aのようなすべてのファイル名は静的ライブラリですが、libyyy.soという名前のファイルは動的ライブラリです。

これは、ライブラリ内の外部シンボルが、実行可能ファイルを作成するためにリンクされるまで決して解決されないことを意味します。次に、ライブラリに必要なすべてのライブラリファイルも必要です。

1

あなたはC++ランタイムライブラリ(-lstdc++)で、最終的な実行可能ファイルをリンクする必要があります。実行可能ファイルをリンクするだけで、C++オブジェクトをコンパイルするときは効果がありません。

関連する問題