【网络通讯】libcurl编译相关补充

01、VS与VC版本号对应关系

VS版本VC版本号发布时间
VS97VC = 51997-02
VS6.0VC = 61998-06
VS2002VC = 72002-02-13
VS2003VC = 7.12003-04-24
VS2005VC = 82005-11-07
VS2008VC = 92007-11-19
VS2010VC = 102010-04-12
VS2012VC = 112012-09-12
VS2013VC = 122013-10-17
VS2015VC = 142015-07-20
VS2017VC = 152017-03-07
VS2019VC = 162019-04-02

02、libcurl静态编译与动态编译

我这里以VS2019为例子,大家实际根据上面对应关系选择对应的版本号。

//静态库,debug,x86
nmake /f Makefile.vc mode=static VC=16 DEBUG=yes MACHINE=x86

//静态库,release,x86
nmake /f Makefile.vc mode=static VC=16 MACHINE=x86

//动态库,debug,x64
nmake /f Makefile.vc mode=dll VC=16 DEBUG=yes MACHINE=x64

//动态库,release,x64
nmake /f Makefile.vc mode=dll VC=16 MACHINE=x64

默认DEBUG是为no的,如果想要支持,则需要手动加上,RELEASE默认是位yes的。
这里知识编译的代码,还有路径设置、盘符设置,请参照上一篇:https://blog.csdn.net/m0_43458204/article/details/116595250

03、关于libcurl库的一点经验分享

  1. 版本:编译之前一定要确保上面编译的版本对应你实际使用的VS版本号
  2. 编码:生成软件版本之前,一定要注意自己的项目编码与静态库(libcurl_a.lib)的编码是对应的。
  3. 编译lib库和引用lib库选项不一致情况
    1)、一个lib库采用“多线程 DLL (/MD)”配置,而另外一个项目采用“多线程(/MT)”编译配置
    2)、一个lib库采用“使用 Unicode 字符集”配置,而另外一个项目采用“使用多字节字符集”编译配置
    3)、一个lib库采用选择“release 版本 ”配置,而另外一个项目采用选择 “debug 版本 ”编译配置
    4)、一个lib库采用“wind32平台 ”配置,而另外一个项目采用“wind64平台 ”编译配置
  4. 没有添加指定预编译宏
    在使用curl静态库时,却遇到了编译链接错误:
    1>testcurl.obj : error LNK2001: unresolved external symbol __imp__curl_easy_init
    1>testcurl.obj : error LNK2001: unresolved external symbol __imp__curl_easy_setopt
    1>testcurl.obj : error LNK2001: unresolved external symbol __imp__curl_easy_perform
    1>testcurl.obj : error LNK2001: unresolved external symbol __imp__curl_easy_cleanup
    
    解决方法是,在自己的项目属性中添加一个预编译宏,CURL_STATICLIB。

所以,为了避免上述问题的产生,我们在使用第三方库时,一定要检查下面步骤:

  1. 引用第三方库时,确认lib库是否使用相同编译平台
  2. 确认编译选项是否一致。比如运行时库和字符集
  3. 若需要则添加指定编译宏
  4. 添加附加库目录和附加依赖项

04、小结

上面的内容就是我这次解决编译、生成版本遇到的问题,所总结的一点小经验,大家如果也遇到了这些问题,是可以借鉴、试着搞搞、排除一下的。

版权声明:技术分享类文章,欢迎转载!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cain Xcy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值