求助:无法使libcurl正常运行(链接器错误)
解决libcurl在VS2017中编译的链接器错误问题
我之前也踩过这个一模一样的坑!你选了平台无关的通用源码包,没用到Windows专属的编译配置,这才导致VS链接器找不到对应库文件报错。下面给你梳理具体的修复方案:
方案一:用Windows专属编译脚本快速构建
- 你下载的源码包其实自带Windows编译脚本,只是路径没找全。回到解压后的
curl-7.58.0根目录,找到完整的winbuild文件夹(不是你提到的winb...) - 打开「Developer Command Prompt for VS 2017」,切换到
winbuild路径,比如执行:cd C:\Users\PC\Downloads\curl-7.58.0\curl-7.58.0\winbuild - 根据你的项目需求执行编译命令,比如编译32位Release静态库(最常用的配置):
参数说明:nmake /f Makefile.vc mode=static VC=15 MACHINE=x86 DEBUG=nomode=static:编译静态库,需要动态库就改成dllVC=15:对应VS2017的版本号,别写错MACHINE=x86:编译32位库,要64位就换成x64DEBUG=no:编译Release版本,Debug调试就改成yes
- 编译完成后,库文件会生成在
curl-7.58.0\builds目录下,比如curl-7.58.0\builds\libcurl-vc15-x86-release-static-ipv6-sspi-winssl,里面的lib和include文件夹直接引入VS项目即可。
方案二:直接用预编译库(更省心)
要是不想自己折腾编译,直接用预编译包更快:
- 回到下载向导选择「Precompiled Packages」,挑对应Windows平台(Win32/Win64)和VS2017的预编译包下载
- 解压后把
include文件夹加到VS项目的附加包含目录,lib文件夹加到附加库目录,最后在链接器的输入里添加libcurl.lib(静态库)或libcurl.dll.lib(动态库)
常见链接器错误排查
如果还是报错,检查这几点:
- 项目的平台(x86/x64)必须和libcurl库的编译平台完全一致
- 用静态库时,一定要在VS项目的预处理器定义里加上
CURL_STATICLIB,否则会出现符号未定义的链接错误 - 用动态库时,要把
libcurl.dll拷贝到项目的输出目录,不然运行时会找不到DLL
内容的提问来源于stack exchange,提问作者jakub_gros
相关产品推荐
相关产品推荐

