繁体   English   中英

特征与CPPUTest?

[英]Eigen with CPPUTest?

我在尝试使用CPPUTest来测试我的库时遇到了问题。

一切都很好,直到我包括Eigen库来处理矩阵处理。 当我尝试用g ++构建时,Eigen库不断抛出错误:

  • /eigen3/Eigen/src/Core/util/Memory.h:270:41错误:'ptr'没有命名类型

  • /eigen3/Eigen/src/Core/CoreEvaluators.h:1655:12错误:'static_cast'之前的预期类型说明符

  • /eigen3/Eigen/src/Core/PlainOBjectBase.h:137:5错误:'operator new'声明为非功能

如果Eigen或CPPUTest单独运行,则不输出错误。

我的猜测是两个图书馆在某些方面存在冲突。

真的需要一些帮助。 太谢谢了。

编辑1:这是我的Makefile:

CXX = g ++ -std = c ++ 0x -lstdc ++ CXXFLAGS = -g -Wall -static -fprofile-arcs -ftest-coverage -I./ -I $(CPPUTEST_HOME)/ include LDFLAGS = -L./ -L $( CPPUTEST_HOME)/ lib -lCppUTest -lCppUTestExt -pthread CPPUTEST_HOME = ./cpputest/workspace/install USER_CFLAGS = -I / usr / local / include / eigen3 TARGET = MyLibrary SRCS = MyLibrary.cpp MyLibraryTest.cpp OBJS = $(SRCS:.cpp = .o)all:$(TARGET)$(TARGET):$(OBJS)$(CXX)-o $ @ $ ^ $(CXXFLAGS)$(LDFLAGS)$(OBJS):$(SRCS)$(CXX) -c $(CXXFLAGS)$ ^%。o:%。cpp $(CXX)-c $(CXXFLAGS)$ <
.PHONY:干净整洁:rm -f $(TARGET)$(OBJS)* .gcno * .gcov ~find。 -name“ .gcda”| xargs -rr

似乎CppUTest定义了一个new的宏: https//github.com/cpputest/cpputest/blob/master/include/CppUTest/MemoryLeakDetectorNewMacros.h#L76

当我在#include <CppUTest/TestHarness.h> #include <Eigen/Core>之前#include <Eigen/Core> ,我没有收到您报告的错误(尽管没有进一步测试)。 另外,您也可以#undef new包括CppUTest后或定义CPPUTEST_MEM_LEAK_DETECTION_DISABLED包括CppUTest(那当然将禁用泄漏检测)前。

Eigen中的违规行使用了placement-new运算符(即,它本身不分配内存),它的语法就是抛出CppUTest的new宏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM