Как мне скомпилировать и связать код C ++ с скомпилированным кодом C?

Я хочу иметь возможность использовать Cmockery для имитации вызываемых функций C из кода C ++, который я тестирую. В качестве шага к этому я переименовал пример Cmockery run_tests.c в run_tests.cpp, и я пытаюсь скомпилировать и связать его с cmockery.c:

g++ -m32 -DHAVE_CONFIG_H -DPIC -I ../cmockery-0.1.2 -I /usr/include/malloc -c run_tests.cpp -o obj/run_tests.o
gcc -m32 -DHAVE_CONFIG_H -DPIC -Wno-format -I ../cmockery-0.1.2 -I /usr/include/malloc -c ../cmockery-0.1.2/cmockery.c -o obj/cmockery.o
g++  -m32 -o run_tests obj/run_tests.o obj/cmockery.o

Первые две командные строки (чтобы compile) успешны, но после последнего я получаю:

Undefined symbols:
  "_run_tests(UnitTest const*, unsigned long)", referenced from:
      _main in run_tests.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

Этот неопределенный символ взят из строки 29 run_tests.cpp:

return run_tests(tests);

Функция run_tests () определена в cmockery.c.

Прочитав « Связывание кода C ++ с 'gcc' (без g ++) », я попробовал:

gcc -lstdc++ -m32 -o run_tests obj/run_tests.o obj/cmockery.o

Но получил то же самое результат:

Undefined symbols:
  "_run_tests(UnitTest const*, unsigned long)", referenced from:
      _main in run_tests.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

Как мне скомпилировать и скомпилировать код C ++, чтобы он находил символы в коде C?

6
задан Community 23 May 2017 в 11:53
поделиться