【发布时间】:2016-03-05 23:43:47
【问题描述】:
我正在尝试使用 CodeBlocks 和 CppUTest 编译以下测试应用程序,但是无论我做什么,我总是会收到 undefined reference 错误。我用 cygwin 编译了 CppUTest,在代码块中我使用了 MinGW。
项目目录只有两个文件,main.cpp 和tests.cpp,我正在尝试编译。
这是main.cpp 文件:
#include "CppUTest/CommandLineTestRunner.h"
int main(int ac, char** av)
{
return CommandLineTestRunner::RunAllTests(ac, av);
}
这是tests.cpp 文件:
#include "CppUTest/TestHarness.h"
TEST_GROUP(FirstTestGroup)
{
};
TEST(FirstTestGroup, FirstTest)
{
FAIL("Fail me!");
}
TEST(FirstTestGroup, SecondTest)
{
STRCMP_EQUAL("hello", "world");
LONGS_EQUAL(1, 2);
CHECK(false);
}
我已经有了库libCppUTest.a 和libCppUTestExt.a,现在我必须将它们链接到项目。为此,我尝试了以下方法:
- 在构建选项中,添加
<CppUTest>\include\以搜索编译器目录。 - 在构建选项中,添加
<CppUTest>\lib\以搜索链接器的目录。 - 在链接设置中,将
libCppUTest.a和libCppUTestExt.a添加到链接库。还尝试使用这些库的完整路径。
我认为问题不在于代码块,因为我已尝试使用我找到的所有指南来链接库,但我总是得到undefined reference。我也尝试将这些添加为全局设置,但我得到了同样的错误,undefined reference。
有什么想法吗?
【问题讨论】:
-
这不是 C 代码。不要为 C++ 添加 C 标签。
-
好的,没关系。道歉。
-
C++ 中的库没有标准格式,即使使用不同的编译器版本也不能互操作。我怀疑这是因为不同的编译器。阅读 C++ 共享库中的名称修饰。
-
不能在windows上用Cmake编译吗?你不能使用 DLL 库吗?
-
我尝试使用 Cmake GUI 和 MinGW make,但是由于此编译器与 pthreads 的问题,CppUTest 3.7.1(最新版本)无法使用 MinGW 构建。于是我用cygwin编译了。
标签: c++ tdd codeblocks cpputest