尝试使用CPPUTest测试我的库时遇到问题。
一切都很好,直到我包括用于矩阵处理的Eigen库。
当我尝试使用g++进行构建时,Eigen库不断抛出错误:
如果Eigen或CPPUTest分别运行,则不会输出错误。
我的猜测是这两个库在某些时候存在冲突。
真的需要一些帮助。太谢谢了。
编辑1:
这是我的Makefile:
最佳答案
看来CppUTest定义了一个宏new
:
https://github.com/cpputest/cpputest/blob/master/include/CppUTest/MemoryLeakDetectorNewMacros.h#L76
当我在#include <Eigen/Core>
之前#include <CppUTest/TestHarness.h>
时,我没有收到您报告的错误(不过,没有进行进一步的测试)。另外,您可以在包含CppUTest之后添加#undef new
或在包含CppUTest之前定义CPPUTEST_MEM_LEAK_DETECTION_DISABLED
(这当然会禁用泄漏检测)。
Eigen中令人反感的行使用的是placement-new运算符(即,它本身并不分配内存),而语法就是抛出CppUTest的new
宏的原因。
关于c++ - Eigen 与CPPUTest吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41358317/