我正在尝试使用cpputest构建一个简单的单元测试可执行文件。我已将cpputest框架构建到静态库中,现在正尝试将其链接到可执行文件中。但是,由于相关的代码,我陷入了一个相当复杂的Makefile设置中。

这是我的命令行:

/usr/bin/qcc -V4.2.4,gcc_ntoarmle_acpp-ne -lang-c++ -O2 -g -g -o Application/UnitTests/Tests/symbols/UnitTestExe -Wl,--start-group Application/UnitTests/Tests/../.objs/main.o Application/UnitTests/lib/libcpputest.a -Wl,--end-group -lm

我收到许多类似以下的错误:
 Application/UnitTests/lib/libcpputest.a(CommandLineTestRunner.o): In function `CommandLineTestRunner::parseArguments(TestPlugin*)':
   Application/UnitTests/cpputest/src/CppUTest/.objs/../CommandLineTestRunner.cpp:114: undefined reference to `operator new(unsigned int, char const*, int)'

我不知道是什么原因造成的。我不是免费使用C++获得新的运算符吗?

最佳答案

问题中的信息很少,但是看起来有些代码使用某种形式的新布局,而特殊的operator new声明为(编译器找到它并使用它编译代码),链接器可以找不到其定义

(由于我的这个旧答案似乎仍然受到关注:有关声明和定义的广泛讨论,请参见here。)

关于c++ - undefined reference 运算符new,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3735804/

10-11 12:18