2009-05-11 13 views
0

Windows XP、ging ++ 3.4.4 with cygwin、g ++ 3.4.5 with mingw。g ++ 3.4.4およびg ++ 3.4.5とのリンクエラー

私はcppunitで簡単な単体テストクラスをコンパイルしています。

g ++ 3.4.5を使用してリンクすると、多くのリンクエラーが発生します。私がg ++ 3.4.4とリンクするとき、私はエラーを起こさず、exeはうまくリンクして実行されます。

私はエラーをトレースするように見えないので、任意の考えですか?

ありがとうございました。

EDIT:リンクエラー:参照されていない関数エラー。同様に:

SimpleTest.cpp:(.text+0x313): undefined reference to `CppUnit::Message::Message(std::string const&, std::string const&)' 

EDIT:CMDライン:

g++ -I g:\projects\thirdparty\cppunit-1.12.1\include -L g:\projects\thirdparty\cppunit-1.12.1\lib -l cppunitd -o main.exe main.cpp SimpleTest.cpp 

更新:Visual Studioで同じコード:エラーなし、ユニットテスト期待通りに動作します。

+0

エラーは何ですか? – stimms

+0

エラーは何ですか?リンカーのコマンドラインは何ですか? –

+0

とコマンドライン? –

答えて

0

リンク線が間違っている可能性があります。リンク線のソース/オブジェクトファイルとライブラリの順序matters。修正リンク:

g++ -I g:\projects\thirdparty\cppunit-1.12.1\include \ 
    -L g:\projects\thirdparty\cppunit-1.12.1\lib \ 
    -o main.exe main.cpp SimpleTest.cpp -lcppunitd 
+0

違いはありません。私はあなたのcmdを正確にコピーしました。 – cbrulak

+0

@cbrulakあなたはこの答えを受け入れましたが、これはうまくいかなかったとコメントで述べています。私たちがここに見えないと説明する何かがありますか? – Gaffi

+0

私はそれが「最高」だったので、私はそれを受け入れました。当時、「最高の」マークをつけることについてのたずねるリマインダがたくさんあったからです。混乱させて申し訳ありません。 – cbrulak

0

g ++が成熟するにつれて、私は4.2.3になっています。タイプチェックは、より賢明になりました。ちょっとした情報があれば、これらのメソッドへの呼び出しを注意深く見てください。私はそのタイプがかなり正しいとは思わない。 3.4.4はそれをキャッチしない、3.4.5はそれをキャッチしない。 .... JW

+0

cppunitに関する経験はありますか?その多くはマクロ駆動型なので、私は変わったことや特別なことはしていないと思います。 – cbrulak

+0

これは型の問題ではありません。エラーはリンクエラーであるため、コンパイル(型チェックを含む)は既に成功しています。 –

0

Linuxでg ++ 3.4.5および/または3.4.4を使用してコンパイルすることをお勧めします。結果が同じであれば、明らかにgccの特性です。さもなければそれはmingw問題のようにもっと聞こえる。

+0

良い先端。私はそれが問題だと思う。私は、このシンプルなテストケースがLinux上で打ち壊されるとは考えにくいです。 – cbrulak

関連する問題