Все, я новичок в CppUtest, поэтому, пожалуйста, потерпите меня.
В нашем проекте мы используем библиотеку protobuf C ++, хотя большая часть кода написана на C. Сейчас я пытаюсь добавить CppUtest для создания инфраструктуры модульного тестирования для нашего проекта.
Таким образом, я интегрировал образец кода CheatSheet из CppUtest, который я использовал для моего начального тестирования (без использования какого-либо заголовочного файла или функции из моего проекта) в моем проекте, и он работал совершенно нормально.
Теперь я только добавил свой заголовочный файл проекта (который включает в себя множество заголовочных файлов, включая заголовочный файл protobuf (google / protobuf / message.h)) в файле CheatSheet.c.
Я получаю следующую ошибку: я думаю, что есть двойное определение нового оператора в CppUtest и protobuf.
g ++ -g -std = c99 -w -Wall -I .. -I ../../ common -I ../../ common / UDP_Protobuf -c ICP_Test.c -o ICP_Test.o
В файле из /usr/include/CppUTest/MemoryLeakWarningPlugin.h:32:0,
from /usr/include/CppUTest/TestHarness.h:45,
from ICP_Test.c:5:
/usr/local/include/google/protobuf/arena.h: в конструкторе
«Google :: Protobuf :: ArenaOptions :: ArenaOptions ()»:
/usr/local/include/google/protobuf/arena.h:146:33: ошибка: недопустимое преобразование из «const char *» в «std :: size_t {aka long unsigned int}» »[-fpermissive]
block_alloc (&:: оператор новый),
^
В файле, включенном в /usr/include/c++/5/ext/new_allocator.h:33:0,
from /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:33,
from /usr/include/c++/5/bits/allocator.h:46,
from /usr/include/c++/5/string:41,
from /usr/include/CppUTest/SimpleString.h:155,
from /usr/include/CppUTest/Utest.h:34,
from /usr/include/CppUTest/TestHarness.h:39,
from ICP_Test.c:5:
/ usr / include / c ++ / 5 / new: 129: 14: примечание: инициализация аргумента 1 оператора «void * new» (std :: size_t, void *) ’
встроенный void * оператор new (std :: size_t, void * __p) _GLIBCXX_USE_NOEXCEPT
Я могу решить эту проблему, добавив следующее в мой параметр компилятора g ++.
-UCPPUTEST_USE_MEM_LEAK_DETECTION -DCPPUTEST_MEM_LEAK_DETECTION_DISABLED при компиляции файла CheatSheet.c.
Но я думаю, что это будет означать, что я не смогу провести какой-либо тест на утечку памяти в моем проекте (функции в моем проекте, где я выделяю и освобождаю память).
Могу ли я получить помощь о том, как решить проблему с ошибкой компиляции.
И если параметры компиляции, которые я помещаю, корректно разрешают его, я смогу проверить утечку памяти в моем проекте.
Задача ещё не решена.
Других решений пока нет …