Qt MSVC 调用curl lib

发布于 2023-09-16  2k 次阅读


本人环境为 VS stidio 2022, Win 10,Qt Creator 11.0.1,Qt 6.6.0,curl源码版本为 8.3.0

不同版本目录脉络可能不同,文中提供路径可能找不到指定文件,请善用Windows文件夹提供的搜索

这方面的攻略大多比较过时且为MinGW版,大量文章均为复制粘贴,故写一篇更具时效性,更详细的攻略给后来者😀

文末有懒人通道,不一定兼容!

一、编译curllib

  1. 前往官网download页面下载curl 源码 : https://curl.se/download.html
  2. 解压至任意位置,打开 curl-8.3.0\winbuild ,其内应有文件 Makefile.vc 。【若搜不到此文件请确认下载为Win源码,或新版本已不再支持VC动态编译】
  3. 找到VS IDE安装目录下 vcvars64.bat ,本人路径为 VS install dir\IDE\VC\Auxiliary\Build\vcvars64.bat
  4. cmd 内运行 vcvars64.bat 后,此cmd窗口暂时拥有 MAKE 所需的路径变量
  5. cd 至解压的 curl-8.3.0\winbuild\ 目录下
  6. 输入 nmake /f Makefile.vc mod=dll
  7. 若无问题在 curl-8.3.0\builds 目录下可找到名如 libcurl-vc-x64-release-dll-ipv6-sspi-schannel 的文件夹,即为编译出的 curllib

二、Qt链接curllib 【末端懒人通道】

  1. Qt Creator 打开欲加入 curllib 的项目,右键项目-> Add library [添加库]
  2. 选择External library
  3. library file选中编译好的libcurl.lib,include file 会自动填充
  4. 一路next至finish

可能的报错

一、找不到libcurl.dll文件 or 找不到XX文件

\编译出的libcurl文件夹内\bin\ 下找到 libcurl.dll 复制到与上边引用的 libcurl.lib 一个目录下,我是 \编译出的libcurl文件夹内\lib\

二、LNK1104: 无法打开文件“libcurld.lib”

一般出现于你使用非Relese版本编译情况下,上边编译出的 libcurl 库是用于 Relese 版本的,想要debug版本的请修改一下编译 libcurl 库使用的命令,或是简单的.pro文件内的调用代码由

else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libcurl-vc-x64/lib/ -llibcurld

改为

else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libcurl-vc-x64/lib/ -llibcurl

懒人通道:

下载解压后丢入你的项目根目录,在.pro文件内加入以下代码

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/libcurl-vc-x64/lib/ -llibcurl
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libcurl-vc-x64/lib/ -llibcurl
else:unix: LIBS += -L$$PWD/libcurl-vc-x64/lib/ -llibcurl

INCLUDEPATH += $$PWD/libcurl-vc-x64/include
DEPENDPATH += $$PWD/libcurl-vc-x64/include

非彼无我,非我无所取。是亦近矣,而不知其所为使。