Собственный с 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 ошибка: объявление ‘оператора new’ как нефункционального

Если Eigen или CPPUTest работает отдельно, ошибка не выводится.

Я предполагаю, что в какой-то момент две библиотеки конфликтуют.

Действительно нужна помощь здесь. Большое спасибо.

Изменить 1:
Это мой Makefile:

CXX = g ++ -std = c ++ 0x -lstdc ++ CXXFLAGS = -g -Wall -static
-fprofile-arcs -ftest-охват -I./ -I $ (CPPUTEST_HOME) / include LDFLAGS = -L./ -L $ (CPPUTEST_HOME) / lib -lCppUTest -lCppUTestExt -pthread CPPUTEST_HOME = ./cpputest/workspace/FLAGS USR = -Я
/ usr / local / include / eigen3 TARGET = MyLibrary SRCS = MyLibrary.cpp
MyLibraryTest.cpp OBJS = $ (SRCS: .cpp = .o) все: $ (TARGET) $ (TARGET):
$ (OBJS) $ (CXX) -o $ @ $ ^ $ (CXXFLAGS) $ (LDFLAGS) $ (OBJS): $ (SRCS)
$ (CXX) -c $ (CXXFLAGS) $ ^% .o:% .cpp $ (CXX) -c $ (CXXFLAGS) $<
.ТЕЛЕФОН: clean clean: rm -f $ (TARGET) $ (OBJS) * .gcno * .gcov найти.
-название «
.gcda «| xargs -r r

1

Решение

Похоже, что CppUTest определяет макрос new:
https://github.com/cpputest/cpputest/blob/master/include/CppUTest/MemoryLeakDetectorNewMacros.h#L76

Когда я #include <Eigen/Core> до #include <CppUTest/TestHarness.h>Я не получаю сообщение об ошибке, которую вы сообщили (не проводил дальнейшее тестирование). Кроме того, вы можете #undef new после включения CppUTest или определения CPPUTEST_MEM_LEAK_DETECTION_DISABLED перед включением CppUTest (который, конечно, отключит обнаружение утечек).

В Eigen используется некорректная строка с использованием оператора размещения (то есть она не выделяет саму память), а ее синтаксис выбрасывает CppUTest new макрос выключен.

0

Другие решения

Других решений пока нет …