【问题标题】:Codeblocks and CppUTest, undefined reference代码块和 CppUTest,未定义的参考
【发布时间】:2016-03-05 23:43:47
【问题描述】:

我正在尝试使用 CodeBlocks 和 CppUTest 编译以下测试应用程序,但是无论我做什么,我总是会收到 undefined reference 错误。我用 cygwin 编译了 CppUTest,在代码块中我使用了 MinGW。

项目目录只有两个文件,main.cpptests.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.alibCppUTestExt.a,现在我必须将它们链接到项目。为此,我尝试了以下方法:

  • 在构建选项中,添加 <CppUTest>\include\ 以搜索编译器目录。
  • 在构建选项中,添加 <CppUTest>\lib\ 以搜索链接器的目录。
  • 在链接设置中,将libCppUTest.alibCppUTestExt.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


【解决方案1】:

正如@Sreekar 所指出的,问题是我在代码块中使用了 MinGW,并且这些库是用 cygwin 编译的。在 Codeblocks 中将编译器更改为 cygwin 为我解决了这个问题。

这描述了如果需要在代码块中将编译器更改为 cygwin 的过程:

https://www.youtube.com/watch?v=oVmd0P85D8o

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 2016-07-01
    • 1970-01-01
    • 2012-04-15
    • 2011-09-11
    • 2017-10-13
    相关资源
    最近更新 更多