1

我正在尝试将libcurl拉入一个大型 C++ 项目。

但是我无法编译它。我看到来自 ws2def.h、winsock2.h 和 ws2tcpip.h 的错误

一些错误如下所示:

错误 C2061:语法错误:标识符 'iSockaddrLength' ws2def.h 225
错误 C3646:“LPSOCKADDR”:未知覆盖说明符 ws2def.h 225

..

错误 C2061:语法错误:标识符“dwNumberOfProtocols”winsock2.h 1259

我尝试在直接 C 模式下编译 #include "curl.h" 的文件,但这并没有解决问题。

4

3 回答 3

2

您使用的是哪个 C++ 编译器?我的根本没有 ws2def.h。另外,请记住,winsock.h 和 winsock2.h 彼此不兼容,并且某些 Win32 头文件将默认包含 winsock.h,然后您的代码才有机会包含 winsock2.h。因此,您可能必须通过_WINSOCKAPI_在项目的编译器条件中定义来禁用 winsock.h。

于 2009-09-15T22:28:55.447 回答
1

在包含或任何 libcurl 标头windows.h之前尝试包含。winsock2.h不要问我为什么这有时会起作用,但确实如此。

于 2009-09-16T06:11:41.130 回答
0

看起来其他东西正在引入与 curl 冲突的 winsock 定义。你可以尝试建立一个使用 curl 的项目吗?哦,我必须将 CURL_STATICLIB 添加到我的预处理器定义中以使其链接。

于 2009-09-16T02:09:53.137 回答