2009-07-10 6 views
1

J'ai une DLL qui utilise boost Asio pour le réseautage. Lorsque je lie cette dll à une application en cours d'exécution sur Windows 2000, une exception d'exécution est lancée:Boost Asio dll soulevant erreur ws2_32.dll sur Windows 2000

« Le point d'entrée de procédure freeaddrinfo ne pouvait pas se trouver dans la bibliothèque de liens dynamiques WS2_32.DLL »

Microsoft fournit une solution de contournement au http://msdn.microsoft.com/en-us/library/ms737931(VS.85).aspx, mais cela n'a pas fonctionné pour moi.

Quelqu'un peut-il me diriger vers une solution ??

Merci beaucoup,

- Vijay

Répondre

1

Êtes-vous construire votre dll avec les valeurs correctes définies pour NTDDI_VERSION et _WIN32_WINNT pour cibler Windows 2000? Vous voulez les mettre à 0x05000000 et 0x0500. En supposant que vous reconstruisez ensuite complètement votre DLL, vous devriez alors soit obtenir un avertissement sur le fait que le compilateur ne puisse pas trouver freeaddrinfo (si vous n'avez pas suivi la solution de contournement MS) ou il devrait simplement fonctionner.

En ce moment, je m'attends à ce que vous construisiez pour cibler une version ultérieure de Windows et les en-têtes vous permettent d'utiliser la fonction qui n'est pas présente dans les DLL système présentes sur le système que vous essayez de courir.