Ошибка компиляции при использовании CppUtest и protobuf в проекте

Все, я новичок в 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.

Но я думаю, что это будет означать, что я не смогу провести какой-либо тест на утечку памяти в моем проекте (функции в моем проекте, где я выделяю и освобождаю память).

Могу ли я получить помощь о том, как решить проблему с ошибкой компиляции.
И если параметры компиляции, которые я помещаю, корректно разрешают его, я смогу проверить утечку памяти в моем проекте.

0

Решение

Задача ещё не решена.

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

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