VS2015:libcurl静态编译

说明一下我是以64位来编译,跟32大同小异

其它参考:https://blog.csdn.net/baidu_41327283/article/details/82974539

我是用 vs2015 直接进去目录:D:\OPENGL\curl\projects\Windows\VC15\lib  

发现没有libcurl.vcxproj

需要先执行:D:\OPENGL\curl\projects 几个.bat

build-wolfssl.bat

build-openssl.bat

generate.bat

checksrc.bat

有什么用我没用关心,好像是build-wolfssl.bat这个批处理生成了D:\OPENGL\curl\projects\Windows\VC15\lib\libcurl.vcxproj

使用过程中有错误,比如编译不过的都可以在这查询一下:

https://www.cnblogs.com/unicornsir/articles/12883412.html

如出现:LNK2019    无法解析的外部符号 __imp_wcscpy,该符号在函数 Curl_load_library 中被引用    QTGuitest    I:\MyQTGuitest\QTGuitest\libcurld.lib(system_win32.obj)    1    

还有可能有多字符集和unicode 字符集,libcurl默认是多字符集

也有可能,反正我还没有解决

https://www.cnblogs.com/132818Creator/p/14358595.html(好像我的LNK2019    报错比较像这个)

上面方法试了不行,我又试了这个 https://stackoverflow.com/questions/32418766/c-unresolved-external-symbol-sprintf-and-sscanf-in-visual-studio-2015

legacy_stdio_definitions.lib

还是不行,再试下

    8

wevsty   2017-06-07 14:19:36 +08:00

@llllllllllll
我不明白为什么一定要手动指定 main 函数作为入口。使用默认的 mainCRTStartup 显然是更安全的选项。
如果一定要这样做可以使用下面的方法手动链接运行库。
#pragma comment(lib, "msvcrtd.lib")
#pragma comment(lib, "vcruntimed.lib")
#pragma comment(lib, "ucrtd.lib")
需要根据自己的编译选项来确定链接哪些库
Release DLLs (/MD ): msvcrt.lib vcruntime.lib ucrt.lib
Debug DLLs (/MDd): msvcrtd.lib vcruntimed.lib ucrtd.lib
Release Static (/MT ): libcmt.lib libvcruntime.lib libucrt.lib
Debug Static (/MTd): libcmtd.lib libvcruntimed.lib libucrtd.lib

还是不行

严重性    代码    说明    项目    文件    行    禁止显示状态
错误    LNK2001    无法解析的外部符号 __imp_write    QTGuitest    I:\MyQTGuitest\QTGuitest\OLDNAMES.lib(write.obi)    1    
错误    LNK2019    无法解析的外部符号 __imp__access,该符号在函数 curlx_win32_access 中被引用    QTGuitest    I:\MyQTGuitest\QTGuitest\libcurld.lib(curl_multibyte.obj)    1    
错误    LNK2019    无法解析的外部符号 __imp_write,该符号在函数 curlx_write 中被引用    QTGuitest    I:\MyQTGuitest\QTGuitest\libcurld.lib(warnless.obj)    1    
错误    LNK2019    无法解析的外部符号 __imp_wcscpy,该符号在函数 Curl_load_library 中被引用    QTGuitest    I:\MyQTGuitest\QTGuitest\libcurld.lib(system_win32.obj)    1    
错误    LNK2019    无法解析的外部符号 __imp_unlink,该符号在函数 cookie_output 中被引用    QTGuitest    I:\MyQTGuitest\QTGuitest\libcurld.lib(cookie.obj)    1    
错误    LNK2001    无法解析的外部符号 __imp_unlink    QTGuitest    I:\MyQTGuitest\QTGuitest\libcurld.lib(altsvc.obj)    1    
错误    LNK2001    无法解析的外部符号 __imp_unlink    QTGuitest    I:\MyQTGuitest\QTGuitest\OLDNAMES.lib(unlink.obi)    1    
错误    LNK2019    无法解析的外部符号 __imp_strspn,该符号在函数 hostname_check 中被引用    QTGuitest    I:\MyQTGuitest\QTGuitest\libcurld.lib(urlapi.obj)    1    
错误    LNK2019    无法解析的外部符号 __imp_read,该符号在函数 curlx_read 中被引用    QTGuitest    I:\MyQTGuitest\QTGuitest\libcurld.lib(warnless.obj)    1    
错误    LNK2001    无法解析的外部符号 __imp_read    QTGuitest    I:\MyQTGuitest\QTGuitest\OLDNAMES.lib(read.obi)    1    
错误    LNK2019    无法解析的外部符号 __imp_close,该符号在函数 file_done 中被引用    QTGuitest    I:\MyQTGuitest\QTGuitest\libcurld.lib(file.obj)    1    
错误    LNK2001    无法解析的外部符号 __imp_close    QTGuitest    I:\MyQTGuitest\QTGuitest\OLDNAMES.lib(close.obi)    1    
错误    LNK1120    7 个无法解析的外部命令    QTGuitest    I:\MyQTGuitest\x64\Debug\\QTGuitest.exe    1    
 

https://blog.csdn.net/sinat_31066863/article/details/76038154摘抄一段

微软给程序默认使用的运行库是 (/MD) (/MDd) 都是动态的运行库。有的时候包含了一个第三方库,一链接就是一堆的报错,然后运行库改成(/MT) (/MTd) 后就能够正常链接了。但是如果一不小心再包含其他库,其他库是使用 (/MD) (/MDd) 生成的,结果就可能报出上面这种类型的错。很纳闷,这个库是应该存在的,结果他说链接不了。

写这篇文章的目的是,提醒自己微软的运行库是一个坑,不能链接的另一种可能就是你包含的库生成时使用的运行库可能不一致。

要不再看看这个:https://blog.csdn.net/yqichang/article/details/10825111

好了搞不定,跟他们一样的报错,就还解决不了,换一个LIB Debug - LIB OpenSSL选项编译试一下

项目属性-配置属性-链接器-输入-忽略特定的库:libcmtd.lib

成功了,换个思路居然比解决问题更块,主要是我的opensll64位也编译好的,直接include一下就好了,lib居然都不用设置

opensll64库编译见:https://blog.csdn.net/qq_30377315/article/details/114268991

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在VC2015应用中使用libcurl静态库可以通过以下步骤实现: 1. 首先,下载适用于VC2015的libcurl静态库,可以从官方网站上下载最新的版本。 2. 解压下载的文件并打开解压后的文件夹。 3. 在解压后的文件夹中,找到libs文件夹,里面包含了各种编译好的静态库文件。 4. 在VC2015中创建一个新的项目,例如一个控制台应用程序。 5. 在解决方案资源管理器中,右键点击项目名称,选择“属性”。 6. 在属性窗口中,选择“VC++目录”一栏,然后在“包含目录”一栏中添加libcurl头文件的路径。 7. 在同一个属性窗口中,选择“链接器”一栏,然后在“常规”一栏中添加libcurl库文件的路径。 8. 再在链接器中的“输入”一栏中添加所需的libcurl库文件的名称,通常包括libcurl.lib和libssl.lib。 9. 确保将项目的编译器设置为与libcurl静态库相匹配的版本(例如,如果下载的是64位静态库,则需要选择64位编译器)。 10. 点击“应用”和“确定”保存修改。 11. 在项目中的源代码文件中添加#include <curl/curl.h>来包含libcurl库的头文件。 12. 在需要使用libcurl的代码中,使用libcurl提供的函数和接口进行网络请求等操作。 以上是在VC2015应用中使用libcurl静态库的基本步骤。通过将libcurl库文件链接到项目中并包含相应的头文件,我们可以使用libcurl提供的功能和接口来实现各种网络相关的操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值