Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre régulier
    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 :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    public:
    int SetPort(unsigned int newPort);


    et la ligne correspondante dans la sortie de DUMPBIN:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    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

  2. #2
    Expert confirmé
    Bonjour,

    Il doit y avoir un define de Windows de SetPort vers un alias SetPortA. Ta fonction semble s'appeler exactement comme une fonction Windows. Tu peux tenter un #undef SetPort bien placé, ou bien utilise un autre nom

  3. #3
    Membre régulier
    Bonsoir et merci pour l'info. J'ai finalement changé le nom, mais je regarderai la première solution également, juste histoire de...

    Merci.

    GTreize

###raw>template_hook.ano_emploi###