Quiero ser capaz de usar Cmockery para simular funciones C llamadas desde el código C++ que estoy probando. Como paso previo a eso, he cambiado el nombre del ejemplo Cmockery run_tests.c a run_tests.cpp, y estoy tratando de compilar y enlazar con cmockery.c:¿Cómo puedo compilar y vincular código C++ con código C compilado?
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
Las dos primeras líneas de comando (compilar) tienen éxito , pero después de la última consigo:
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
Ese símbolo no definido es de la línea 29 de run_tests.cpp:
return run_tests(tests);
los run_tests() se define en cmocker y.c.
Después de leer "Linking C++ code with 'gcc' (without g++)", he intentado:
gcc -lstdc++ -m32 -o run_tests obj/run_tests.o obj/cmockery.o
pero no obtuvo el mismo resultado:
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ómo compilar y enlazar código C++ por lo que encuentra los símbolos en el código C?
Ninguna de las respuestas (en el momento de escribir este comentario) deja en claro que no es necesario modificar cmockery.h. Puedo poner la declaración de '' extern "C '' alrededor del' #include 'en run_tests.cpp. Aceptaré la primera respuesta para dejar esto en claro. –