2010-11-10 6 views
0

J'ai une bibliothèque statique tierce qui a été construite sous AIX avec gcc. Lorsque j'essaie de lier cette bibliothèque en utilisant le compilateur xlC AIX, j'obtiens toutes sortes de symboles non résolus. Je crois que c'est dû aux différences de nom mangling. Si j'obtiens les noms mangés hors de la bibliothèque avec la commande nm, y a-t-il quelque chose de fondamentalement faux dans la construction du binaire avec le compilateur xlC à condition qu'il puisse trouver les symboles qu'il recherche? Quels problèmes je demande?liant une bibliothèque statique C++ construite par gcc avec un programme compilé par xlC?

Répondre

3

Cela ne marchera très probablement pas; voir la question C++ Faq Lite à ce sujet.

C++ est beaucoup plus compliqué que C, et il y a beaucoup de choses supplémentaires qui pourraient ne pas être compatibles.

Pour quelques exemples, la gestion des exceptions est-elle compatible? Les objets de données sont-ils disposés de la même manière (en C, l'ordre est comme indiqué, mais en C++ il peut varier avec les spécificateurs d'accès)? Est-ce que les vtables fonctionnent de la même manière? Comment est géré le dynamic_cast? La différence de nom mangling vous empêche de créer des liens, mais il y a beaucoup d'autres différences qui peuvent vous mordre.

Vous êtes probablement mieux d'utiliser la version de gcc qu'ils ont faite. C'est ce que j'ai dû faire dans un projet similaire une fois.

+0

Merci beaucoup. – ojblass

Questions connexes