Tengo una biblioteca c que uso en gcc. La biblioteca tiene la extensión .lib, pero siempre está vinculada como una biblioteca estática. Si escribo un programa que usa la biblioteca como código c, todo está bien. Sin embargo, si cambio el nombre del archivo a .cpp (haciendo cosas simples que funcionan tanto en c/C++) obtengo una referencia no definida. Estos son pequeños programas simples que escribo para fines de prueba, por lo que no hay cosas sofisticadas. Compilo usando:C-library sin vincular usando gcc/g ++
gcc -g -Wall -I <path to custom headers> -o program main.c customlibrary.lib -lm -lpthread
Lo anterior funciona como un encanto. Sin embargo:
g++ -g -Wall -I <path to custom headers> -o program main.cpp customlibrary.lib -lm -lpthread
o
gcc -g -Wall -I <path to custom headers> -o program main.cpp customlibrary.lib -lm -lpthread -lstdc++
resultados en referencia indefinida a cualquier función en customlibrary.lib. Intenté crear un enlace simbólico llamado customlibrary.a pero sin suerte.
Por qué no g ++ encontrar reconocer mi biblioteca. Lamentablemente, no tengo acceso al código fuente de las bibliotecas, pero vincular un c-lib a C++ no debería ser un problema, ¿verdad?
el símbolo '__cplusplus' tiene dos guiones bajos, como se define por los estándares relevantes. – RBerteig