2016-04-06 20 views
0

Visual Studio 2015 sagt mir, dass es WSASetSocketSecurity nicht finden kann.
Die DLL existiert und scheint auch in Ordnung zu sein.
WSASetSocketSecurity fehlt

Meine umfasst:

windows.h 
stdio.h 
Wincrypt.h 
Ws2tcpip.h 
mstcpip.h 
iostream 
winsock2.h 
rpc.h 
ntdsapi.h 
tchar.h 
pragma comment(lib,"ws2_32.lib") 
pragma comment(lib,"fwpuclnt.lib") 
pragma comment(lib,"ntdsapi.lib") 
using namespace std; 

Antwort

1

Die 3-Header unter Bedarf in dieser bestimmten Reihenfolge enthalten sein:

  • winsock2.h
  • mstcpip.h
  • Ws2tcpip.h

Technisch ist dies wegen der Makro/define-Mechanismus in Winsock; ermöglicht Winsock, mstcpip.h ermöglicht sichere Socket-Erweiterung und Ws2tcpip.h definiert die Funktionen.

Ich bin mir nicht sicher, ob es einen bestimmten Grund gibt, dies so zu machen, aber so ist es.

+0

ist es nur, danke. Aber warum? Ich verstehe den Grund dieser Bestellung nicht –

+0

@TonyFotter Es ist wie ich schrieb (wegen Makros). Grundsätzlich definiert 'Ws2tcpip.h' die sicheren Socket-Funktionen nur, wenn ein bestimmtes Makro in' mstcpip.h' definiert wurde, und 'mstcpip.h' definiert dieses Makro nur dann, wenn Winsock durch eine Definition in' winsock2.h' aktiviert wurde. – ElderBug

+0

@ElderBug Ich bekomme den gleichen Fehler, auch wenn die Reihenfolge von # includes korrekt ist (WSASetSocketSecurity wurde nicht deklariert) –