如标题所述,我正在尝试使用 libcurl C API 提交简单的 http 查询。
我使用 Windows 作为操作系统,C++ 作为语言,Visual Studio 2008 作为 IDE。
我的代码非常简单:
我初始化 curl :
CURLcode init = curl_global_init(CURL_GLOBAL_ALL);
我初始化句柄:
CURL* handle = curl_easy_init();
我设置了网址:
CRULcode set_url = curl_easy_setopt(handle, CURLOPT_URL, "http://www.example.com")
我提交我的请求:CURLcode submit = curl_easy_perform(handle);
因此,init
和set_url
返回码为0(CURLE_OK
),subimt返回码为2( CURLE_URL_MALFORMAT
).
当我调试时,我意识到我的 URL 已损坏,而不是 http://www.example.com它变为:xj:
在 Release模式下和 0|:
在 Debug模式下。
我一输入 curl_easy_setopt
URL 字符串肯定已损坏。
一定是我的设置有误,所以这里是我的设置摘要(在 Debug模式下)
- 在共享 DLL 中使用 MFC
- 使用多字节字符集
- 预处理器包括 CURL_STATICLIB
- 多线程调试DLL/MDd
- 使用 vc6curl.dsw 项目链接 libcurld.lib(版本 7.21.3)编译
- 也链接aggst ws2_32.lib wldap32.lib
最佳答案
“链接 libcurld.lib(版本 7.21.3)使用 vc6curl.dsw 项目编译”
这就是问题所在。
静态库必须使用相同的编译器和相同的运行时库 (/MDd) 构建。
您可以使用 DLL 版本的 libcurl 来避免这种情况。
关于c++ - 在 Windows 上使用 libcurl,在我的 c++ 项目中,使用 visual studio,因为字符串被损坏而不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7328879/