将错误与g ++ 3.4.4和g ++ 3.4.5链接

时间:2009-05-11 16:05:36

标签: g++ linker

使用:windows xp,g ++ 3.4.4 with cygwin和g ++ 3.4.5 with mingw。

我正在使用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&)'

编辑: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中的相同代码:没有错误,单元测试按预期运行。

3 个答案:

答案 0 :(得分:0)

随着g ++的成熟,我在4.2.3,它的类型检查变得更加迂腐,并且更好。有了这些信息,我会说你应该密切关注你对这些方法的调用。我怀疑这些类型并不完全正确。 3.4.4没有捕获它,3.4.5确实如此。 .... JW

答案 1 :(得分:0)

您可能尝试的一件事是在Linux上使用g ++ 3.4.5和/或3.4.4进行编译。如果结果是相同的,那么它显然是gcc的属性。否则它听起来像是一个明星问题。

答案 2 :(得分: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