Avant aujourd'hui, j'avais toujours cru que l'ordre dans lequel les objets et les bibliothèques étaient transmis à g ++ pendant l'étape de liaison n'était pas important. Puis, aujourd'hui, j'ai essayé de lier le code C++ au code c. J'ai enveloppé tous les en-têtes C dans un bloc externe "C" mais l'éditeur de liens avait toujours des difficultés à trouver des symboles que je connaissais dans les archives d'objets C.g ++ dépendance de l'ordre de liaison lors de la liaison du code c au code C++
Perplexe, j'ai créé un exemple relativement simple pour isoler l'erreur de liaison mais à ma grande surprise, l'exemple le plus simple est lié sans aucun problème. Après un peu d'essai et d'erreur, j'ai trouvé qu'en émulant le modèle de liaison utilisé dans l'exemple simple, je pouvais obtenir le code principal pour lier OK. Le modèle a été code objet premier, objet archives deuxième exemple:
g++ -o serverCpp serverCpp.o algoC.o libcrypto.a
Quelqu'un peut-il faire la lumière sur pourquoi cela pourrait être si ?. Je n'ai jamais vu ce problème lors de la liaison de code C++ ordinaire.
Pour plus de détails, voir: http://stackoverflow.com/questions/1095298/gcc-c-linker-errors-undefined-reference -to-vtable-for-xxx-undefined-referen/1095321 # 1095321 –