Qt使用curl库

1.官网下载源代码:https://curl.haxx.se/download.html

2.使用mingw编译mingw版本:
进入源码目录:

curl-7.32.0\lib
mingw32-make -f Makefile.m32

将生成:
libcurl.a、libcurl.dll和libcurldll.a 三个文件。
将文件复制到个人工程的debug或release目录。

3.编译msvc版本,
打开cmd,进入VS对应的C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\
找到

vcvars32.bat  \\如果编译x86版本(需要跟你个人工程编译版本对应,否则会出现找不到符号问题error LNK 2019),则执行该文件,设置VC环境。
或
vcvars64.bat   \\如果编译x64版本,则执行该文件,设置VC环境。

进入cur/winbuild,可以参考readme文件,开始编译:(GEN_PDB=yes DEBUG=yes 用于生成PDB文件和调试信息,方便后续调试使用)

nmake /f Makefile.vc mode=dll GEN_PDB=yes DEBUG=yes

编译完成后,在

\curl-7.80.0\builds\libcurl-vc-x64-release-dll-ipv6-sspi-schannel\

复制libcurl.lib到个人工程目录。

最后配置pro文件:

msvc: {
DEFINES += CURL_STATICLIB
INCLUDEPATH += ./curl-7.80.0/include
LIBS += -L$$COM_LIB_DIR/win64 -llibcurl
} else {
INCLUDEPATH += ./curl-7.80.0/include
LIBS += "$$COM_LIB_DIR/libcurl.dll" -liconv
}

问题:
1.如果遇到LNK:2019问题。
可以使用dumpbin工具查看库文件是否有对应函数的符号:

"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.10.25017\bin\HostX86\x86\dumpbin.exe" /exports *\libcurl.lib > check.txt
通过我的测试,x86的库符号如下:
     Exports
       ordinal    name
                  __curl_easy_cleanup
                  __curl_easy_duphandle
x64如下:
	Exports
       ordinal    name
                  curl_easy_cleanup
                  curl_easy_duphandle

,如果没有如下符号,则说明库文件不对,如果报的LNK 2019提示的符号是curl_easy_cleanup,说明用的应该是x64的库。这时候需要确认Qt编译的是否是x64版本了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt使用 cURL 需要进行以下几个步骤: 1. 下载 cURL 并编译。你可以从 cURL 官网下载源代码,并按照官方文档进行编译。编译成功后,你需要将编译好的文件复制到你的 Qt 项目中。 2. 在 Qt 项目中包含 cURL 的头文件。你需要在你的 Qt 项目中添加以下代码: ```c++ extern "C" { #include <curl/curl.h> } ``` 这将告诉编译器在编译时包含 cURL 的头文件。 3. 使用 cURL 进行 HTTP 请求。以下是一个示例代码: ```c++ #include <QString> #include <curl/curl.h> size_t writeFunction(void *ptr, size_t size, size_t nmemb, QString *data) { data->append(static_cast<char *>(ptr), size * nmemb); return size * nmemb; } QString getHttpData(const QString &url) { QString data; CURL *curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, url.toStdString().c_str()); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeFunction); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &data); CURLcode res = curl_easy_perform(curl); if (res != CURLE_OK) { // 处理错误 } curl_easy_cleanup(curl); } return data; } ``` 在这个示例中,我们定义了一个 `getHttpData` 函数,它使用 cURL 进行 HTTP GET 请求,并返回响应数据。在 `curl_easy_setopt` 函数中,我们设置了 `CURLOPT_URL` 选项来指定请求的 URL,设置了 `CURLOPT_FOLLOWLOCATION` 选项来启用重定向,设置了 `CURLOPT_WRITEFUNCTION` 和 `CURLOPT_WRITEDATA` 选项来设置回调函数来处理响应数据。 这就是使用 cURL 进行 HTTP 请求的基本步骤。你可以根据需要设置其他选项来进行更高级的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值