Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将libcurl引入C++;程序 我试图进入一个大型C++项目。_C++_C_Libcurl - Fatal编程技术网

将libcurl引入C++;程序 我试图进入一个大型C++项目。

将libcurl引入C++;程序 我试图进入一个大型C++项目。,c++,c,libcurl,C++,C,Libcurl,然而,我在编译它时遇到了困难。我看到来自ws2def.h、winsock2.h和WS2TCIP.h的错误 有些错误如下所示: error C2061: syntax error : identifier 'iSockaddrLength' ws2def.h 225 error C3646: 'LPSOCKADDR' : unknown override specifier ws2def.h 225 .. error C2061: syntax error : identifier

然而,我在编译它时遇到了困难。我看到来自ws2def.h、winsock2.h和WS2TCIP.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 错误C2061:语法错误:标识符'iSockaddrLength'ws2def.h 225 错误C3646:“LPSOCKADDR”:未知重写说明符ws2def.h 225 .. 错误C2061:语法错误:标识符“dwNumberOfProtocols”winsock2.h 1259
我尝试编译C++中包含“CURL.H”的文件,但这并没有解决问题。我的根本没有ws2def.h。另外,请记住winsock.h和winsock2.h彼此不兼容,在代码有机会包含winsock2.h之前,某些Win32头文件将默认包含winsock.h。因此,您可能必须通过在项目的编译器条件中定义
\u WINSOCKAPI
来禁用winsock.h。

看起来有点像是其他东西引入了与curl冲突的winsock定义。您能否尝试设置一个只使用curl的项目?哦,我必须将CURL\u STATICLIB添加到预处理器定义中以使其链接。

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

是否有关于缺少头文件的警告?在我的平台上,curl.h位于/usr/include/curl/中,因此我必须#include。在Unix平台上,有一个名为curl config的实用程序,它可以告诉您要编译哪些库和选项,并链接libcurl。我猜你使用的是Windows,所以可能对你没有多大帮助。这些似乎是VC++错误,如果你在Visual Studio中构建它,请看一下你可能在那里找到的两个指南,上次我需要用该编译器构建它时,我记得它非常简单:curl.haxx.se/libcurl/cIMHO,最好在windows.h(包括winsock.h)之前包含winsock2.h,而不是定义WINSOCKAPI。不过,这并不总是可能的,这取决于您使用的编译器/框架、是否使用了预编译头等等。