2009-07-10 16 views
1

Ich habe eine DLL, die Boost Asio für die Vernetzung verwendet. Als ich diese DLL in eine Anwendung verknüpfen läuft auf Windows 2000 wird eine Laufzeitausnahme geworfen:Boost Asio dll Anhebung ws2_32.dll Fehler unter Windows 2000

„Der Punkt Eintrag Prozedur freeaddrinfo nicht in dem Dynamic Link Library befinden könnte ws2_32.dll“

Microsoft bietet eine Abhilfe bei http://msdn.microsoft.com/en-us/library/ms737931(VS.85).aspx, aber das hat nicht für mich funktioniert.

Kann mir jemand auf eine Lösung hinweisen ??

Vielen Dank,

- Vijay

Antwort

1

Bauen Sie Ihre DLL mit den für NTDDI_VERSION und _WIN32_WINNT gesetzt korrekten Werte der Windows 2000-Ziel? Sie möchten, dass sie auf 0x05000000 und 0x0500 eingestellt sind. Angenommen, Sie erstellen dann Ihre DLL vollständig neu, sollten Sie entweder eine Warnung erhalten, dass der Compiler freeaddrinfo nicht finden kann (wenn Sie die MS-Problemumgehung nicht befolgt haben) oder er sollte "einfach funktionieren".

Momentan erwarte ich, dass Sie eine spätere Version von Windows erstellen, und die Header erlauben Ihnen die Verwendung der Funktion, die nicht in den System-DLLs vorhanden ist, die auf dem System vorhanden sind, das Sie versuchen weiterlaufen.