如何为visual studio各个版本编译对应的libcurl和openssl

当visual studio进行升级的时候,比如从2013升级到2017,很多第三库也需要编译对应的lib才可以,否则,就可能遇到类似这样的错误

libcurl_a.lib(pem_lib.obj) : error LNK2019: unresolved external symbol __iob_func referenced in function PEM_read_bio
libcurl_a.lib(ui_openssl.obj) : error LNK2001: unresolved external symbol __iob_func
libcurl_a.lib(formdata.obj) : error LNK2001: unresolved external symbol __iob_func
libcurl_a.lib(mprintf.obj) : error LNK2001: unresolved external symbol __iob_func
libcurl_a.lib(cookie.obj) : error LNK2001: unresolved external symbol __iob_func
libcurl_a.lib(url.obj) : error LNK2001: unresolved external symbol __iob_func
libcurl_a.lib(cryptlib.obj) : error LNK2019: unresolved external symbol _vsnprintf referenced in function OPENSSL_showfatal
libcurl_a.lib(cryptlib.obj) : error LNK2019: unresolved external symbol _vsnwprintf referenced in function OPENSSL_showfatal
其实,不止libcurl,还有很多别的库也是类似的。

在编译新的libcurl的时候,还需要用到openssl,所以,首先要做的就是编译一个新版本的额openssl。

编译新版本openssl

在安装openssl的时候又需要先安装两个软件,一个是perl,一个是nasm

安装perl

http://strawberryperl.com/ 下载这个版本就好,可用。不一定要https://www.activestate.com/activeperl/downloads,因为这个版本貌似比较麻烦。下载好后安装

安装nasm

http://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D 下载最新版本即可。下载好后安装

设置环境变量

将perl和nasm的路径设置到环境变量中去。
本人装完perl,对应环境已经设置,手动添加了nasm的路径进去

编译openssl

首先打开对应比visual studio的命令行,根据需要,是编译64位还是32位的。本人这里编译的是64位的。

在命令行中进入下载好的openssl已经解压好的路径中,这个不要问我怎么进去了。自己搜一下cmd的一些命令即可。
下面链接应该可以下载你想要的openssl的对应版本

https://www.openssl.org/source/

运行下面命令,大概需要一小会。如果有报错,说明上述环境没搭好。

perl Configure VC-WIN64A no-engine no-shared --prefix="G:\openssl\x64"

接下来依次执行

 nmake
nmake test
nmake install

对应的lib和include就会到prefix所在的目录中去了

编译libcurl

openssl编译好了,才能编译对应版本的libcurl。依旧下载解压libcurl。
https://curl.haxx.se/download.html
下载好,还是和openssl一样打开visual studio对应版本的命令行,进入libcurl的文件目录,里头有一个winbuild,请到这个目录中
编辑目录中的MakefileBuild.vc,替换libeay32.lib为libcrypto.lib,替换ssleay32.lib为libssl.lib

编辑好后,其中修改部分大概长这样
之后就调用命令编译即可
nmake /f Makefile.vc mode=static VC=14 WITH_SSL=static GEN_PDB=yes MACHINE=x64 DEBUG=no RTLIBCFG=static WITH_DEVEL=G:\openssl\x64
其中with_devel是对应的openssl库所在的位置
nmake中有不少参数,比如mode,VC, PDB, DEBUG到底该怎么设置,根据自己需要看吧。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页