簡體   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