Я хочу иметь возможность использовать 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
.первые две командные строки (для компиляции) успешны, но после последней я получаю:
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?