J'ai une bibliothèque c que j'utilise dans gcc. La bibliothèque a l'extension .lib mais est toujours liée en tant que bibliothèque statique. Si j'écris un programme qui utilise la bibliothèque en tant que code c, tout va bien. Si je renomme cependant le fichier en .cpp (en faisant des choses simples qui fonctionnent à la fois en c/c++), j'obtiens une référence indéfinie. Ce sont de simples petits programmes que j'écris à des fins de test donc rien de compliqué. Je compile en utilisant :
gcc -g -Wall -I -o program main.c customlibrary.lib -lm -lpthread
Le code ci-dessus fonctionne à merveille. Cependant :
g++ -g -Wall -I -o program main.cpp customlibrary.lib -lm -lpthread
ou
gcc -g -Wall -I -o program main.cpp customlibrary.lib -lm -lpthread -lstdc++
résulte en une référence indéfinie à n'importe quelle fonction dans customlibrary.lib. J'ai essayé de créer un lien symbolique nommé customlibrary.a mais sans succès.
Pourquoi g++ ne reconnaît-il pas ma bibliothèque ? Malheureusement, je n'ai pas accès au code source des bibliothèques, mais lier une bibliothèque c à du c++ ne devrait pas poser de problème, n'est-ce pas ?