Librairies: méthode exportée avec nom différent du code original (avec un "A" après)
Bonjour,
je suis en train d'essayer de compiler UltimateTCP/IP (https://www.codeproject.com/Articles...P-IP-Home-Page) pour une application dans le cadre de mon travail.
Un truc très étrange que je n'arrive à comprendre s'est produit depuis que j'utilise l'option WINSOCK2.h (au lieu de WINSOCK.h).
Le problème: cette librairie contient un hiérarchie de classes. Là j'ai quatre classes dérivées qui comportent toutes la méthode "SetPort" (elle n'est pas déclarée comme virtuelle dans la classe de base, je précise au cas où), une méthode publique qui affecte un entier à un membre de la classe. Le problème c'est qu'après compilation et obtention de la librairie statique, le symbole "SetPort" n'existe pas et me produit (forcément) une erreur dans le code qui utilise cette librairie. J'ai examiné la sortie de "DUMPBIN.exe /headers" et j'ai constaté qu'au lieu d'avoir "SetPort" j'ai "SetPortA" (pareil pour les quatre classes).
Voici la déclaration de la fonction dans la classe CUT_POP3Client:
Code:
1 2
| public:
int SetPort(unsigned int newPort); |
et la ligne correspondante dans la sortie de DUMPBIN:
Code:
COMDAT; sym= "public: int __thiscall CUT_POP3Client::SetPortA(unsigned int)" (?SetPortA@CUT_POP3Client@@QAEHI@Z)
Il n'y a que cette fonction qui est "renommée" de la sorte.
Est-ce que ça dit quelque chose à quelqu'un??
Merci d'avance.
G13