在 Windows 上使用 libcurl,在我的 c++ 中使用 Visual Studio 的项目无法工作,因为字符串已损坏

发布于 2024-10-11 01:51:40 字数 1082 浏览 6 评论 0原文

正如标题中所解释的,我尝试使用 libcurl C API 提交简单的 http 查询。

我使用 Windows 作为操作系统,C++ 作为语言,Visual Studio 2008 作为 IDE。

我的代码非常简单:

我初始化curl: CURLcode init = curl_global_init(CURL_GLOBAL_ALL);

我初始化我的句柄: CURL* handle = curl_easy_init();

我设置了 url: CRULcode set_url = curl_easy_setopt(handle, CURLOPT_URL, "http://www.example.com")

我提交我的请求: CURLcode Submit = curl_easy_perform(handle);

作为结果,initset_url 返回码为 0 (CURLE_OK),subimt 返回码为 2 (CURLE_URL_MALFORMAT )。

当我调试时,我意识到我的 URL 已损坏,而不是 http://www.example.com 它在发布模式下变为:xj:,在调试模式下变为0|:。 当我输入 curl_easy_setopt 时就会发生这种情况

URL 字符串肯定已损坏。

我的设置肯定有一个是错误的,所以这里是我的设置摘要(在调试模式下)

  • 在共享 DLL 中使用 MFC
  • 使用多字节字符集
  • 预处理器包括 CURL_STATICLIB
  • 多线程调试 DLL /MDd
  • 与 libcurld 链接。 lib(版本 7.21.3)使用 vc6curl.dsw 项目进行编译
  • ,还链接到 ws2_32.lib wldap32.lib

As explained in the title, I am trying to use the libcurl C API to submit simple http query.

I am using windows as an OS, C++ as a language, Visual Studio 2008 as an IDE.

My code is quiet simple:

I initialize curl:
CURLcode init = curl_global_init(CURL_GLOBAL_ALL);

I initialize my handle:
CURL* handle = curl_easy_init();

I set the url:
CRULcode set_url = curl_easy_setopt(handle, CURLOPT_URL, "http://www.example.com")

I submit my request: CURLcode submit = curl_easy_perform(handle);

As a result, the init and set_url return codes are 0 (CURLE_OK), the subimt return code is 2 (CURLE_URL_MALFORMAT).

When I debug I realize that my URL got corrupted, and instead of being http://www.example.com it becomes: xj: in release mode and 0|: in debug mode.
It happens as soon as I enter curl_easy_setopt

The URL string gets definitely corrupted.

There must be one of my settings that is wrong, so here is a summary of my settings (in debug mode)

  • Use MFC in a Shared DLL
  • Use Multi-Byte Character Set
  • preprocessor includes CURL_STATICLIB
  • Multi-threaded Debug DLL /MDd
  • Linking againgst libcurld.lib (version 7.21.3) compile using the vc6curl.dsw project
  • also linking againgst ws2_32.lib wldap32.lib

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

︶ ̄淡然 2024-10-18 01:51:40

“使用 vc6curl.dsw 项目链接 libcurld.lib(版本 7.21.3)编译

这就是问题所在。

静态库必须使用相同的编译器和相同的运行时库(/MDd)构建。

您可以使用 DLL 版本的 libcurl 来避免这种情况。

"Linking againgst libcurld.lib (version 7.21.3) compile using the vc6curl.dsw project"

This is the problem.

Static libraries must be built with the same compiler and the same runtime libraries (/MDd).

You can avoid this with DLL version of libcurl.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文