0

使用:windows xp、cygwinではg ++ 3.4.4、mingwではg++3.4.5。

cppunitを使用して単純な単体テストクラスをコンパイルしています。

g ++ 3.4.5を使用してリンクすると、多くのリンクエラーが発生します。g ++ 3.4.4でリンクすると、エラーは発生せず、exeは正常にリンクして実行されます。

エラーを追跡できないようですので、何か考えはありますか?

ありがとう。

編集:リンクエラー:参照されていない関数エラー。好き:

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

編集:コマンド行:

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の同じコード:エラーなし、単体テストは期待どおりに実行されます。

4

3 に答える 3

0

g ++が成熟するにつれ、私は4.2.3を使用しています。これは、型チェックがより衒学的になり、さらに言えば、より優れたものになっています。少しの情報で、これらのメソッドの呼び出しを注意深く見る必要があると思います。タイプが正しくないのではないかと思います。3.4.4はそれをキャッチしません、3.4.5はキャッチします。.... JW

于 2009-05-11T17:20:06.720 に答える
0

おそらく試すことができることの1つは、Linux上でg++3.4.5および/または3.4.4でコンパイルすることです。結果が同じである場合、それは明らかにgccのプロパティです。そうでなければ、それはmingwの問題のように聞こえます。

于 2009-05-11T20:17:10.723 に答える
0

あなたの問題はおそらく間違ったリンクラインです。リンクライン上のソース/オブジェクトファイルとライブラリの順序が重要です。正しいリンクライン:

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
于 2009-05-12T06:32:17.957 に答える