7
votes

Y a-t-il quelque chose à modifier le schéma de mangling Nom des exportations dans GCC?

J'essaie de construire un projet que j'ai et qu'il a plusieurs fonctions exportées. Les fonctions suivent la convention STDCALL et elles sont mutilées si elles sont compilées avec GCC comme xxx

autres compilateurs manglent le nom comme celui-ci: xxx

est De toute façon, je peux forcer GCC à mangler les noms des fonctions exportées à l'exemple ultérieur?


0 commentaires

3 Réponses :


0
votes

Voir le manuel GCC concernant -Fermettant -underscore . Lisez les avertissements sur les conséquences de cette action cependant; Ce n'est peut-être pas la solution que vous pensez que c'est.


2 commentaires

Merci pour la réponse, bien que cela ne semble pas fonctionner, la norme en C n'est pas d'utiliser le principal soulignement? J'essayais de le rendre portable parmi les compilateurs, les fonctions sont des exportations d'une DLL qui doivent être chargées.


Compilez-vous le code comme C ou C ++? Pour l'interopérabilité du compilateur, la DLL ne doit présenter que des interfaces C. Vous pouvez utiliser C ++, mais les interfaces doivent être déclarées externes "C" (et n'utilisent bien sûr que des types compatibles C et aucune surcharge de fonction).



0
votes

Le meilleur pari lors de la gestion du nom de la fonction Mangling On Windows consiste à toujours utiliser un fichier .def . Cela fonctionnera de la même manière que le compilateur. En règle générale, vous n'avez généralement besoin que de la section exportations : xxx


0 commentaires

4
votes

1 commentaires

Merci, soit que je fais quelque chose de mal ou que cela ne fonctionne pas, cela ne me laissera pas le lier. Pastebin.com/f14A9A00F