Qt使用curl库

本文介绍了如何在Windows环境下编译CURL库的mingw和msvc版本,并解决Qt工程中遇到的LNK2019错误。详细步骤包括下载源代码、使用mingw和VS的vcvars批处理文件进行编译,以及检查库文件的符号匹配。同时,提供了Qt工程配置libcurl库的方法和排查LNK2019错误的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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版本了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值