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 autres compilateurs manglent le nom comme celui-ci: p> est De toute façon, je peux forcer GCC à mangler les noms des fonctions exportées à l'exemple ultérieur? P> P>
3 Réponses :
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. P>
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).
Le meilleur pari lors de la gestion du nom de la fonction Mangling On Windows consiste à toujours utiliser un fichier .def code>. 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 code> exportations code>:
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