我正在尝试将libcurl拉入一个大型C ++项目。
但是我无法编译它。我看到错误来自ws2def.h,winsock2.h和ws2tcpip.h
有些错误看起来像这样:
error C2061: syntax error : identifier 'iSockaddrLength' ws2def.h 225 error C3646: 'LPSOCKADDR' : unknown override specifier ws2def.h 225 .. error C2061: syntax error : identifier 'dwNumberOfProtocols' winsock2.h 1259
我尝试在直接C模式下编译#include“curl.h”的文件,但这并没有解决问题。
答案 0 :(得分:2)
您使用的是哪种C ++编译器?我根本没有ws2def.h。另外,请记住winsock.h和winsock2.h彼此不兼容,并且在您的代码有机会包含winsock2.h之前,默认情况下某些Win32头文件将包含winsock.h。因此,您可能必须通过在项目的编译条件中定义_WINSOCKAPI_
来禁用winsock.h。
答案 1 :(得分:1)
在包含windows.h
或任何libcurl标头之前尝试包含winsock2.h
。不要问我为什么这有时会起作用,但确实如此。
答案 2 :(得分:0)
看起来有些东西正在引入与curl冲突的winsock定义。您可以尝试设置只是使用curl的项目吗?哦,我必须将CURL_STATICLIB添加到我的预处理器定义中以使其链接。