准备文件:
libssh2-1.8.0.tar.gz
Win32OpenSSL-1_1_1.exe
先去libssh2官网下载源码:https://www.libssh2.org
再去下载ssl编译好的库: http://slproweb.com/products/Win32OpenSSL.html
尝试了一下自己编译OpenSSL,太费劲。
libssh2基于ssl,先安装Win32OpenSSL-1_1_1.exe。
解压libssh2-1.8.0.tar.gz到随便一个地方,打开其win32目录中的libssh2.dsw,选择VS 2015。
打开后有个升级提示,顺其自然就行了。
OK了后,解决方案中有两个项目,libssh2和tests。
解决方案配置选择OpenSSL LIB Release。
打开libssh2项目的属性,
C/C++ -> 常规 -> 附加包含目录 -> 编辑并添加刚刚安装的OpenSSL根目录中的include目录。
库管理器 -> 常规 -> 附加库目录 -> 添加OpenSSL根目录中的lib\VC目录。
库管理器 -> 常规 -> 附加依赖项 -> 添加libcrypto32MT.lib和libssl32MT.lib。这两个必须在上面添加的目录中能找到。
C/C++ -> 代码生成 -> 运行库 -> 修改为多线程(MT)。上面添加的都是MT.lib。
Ctrl + F5
1>------ 已启动全部重新生成: 项目: libssh2, 配置: OpenSSL LIB Release Win32 ------
1> agent.c
1> channel.c
1> comp.c
1> crypt.c
1> global.c
1> hostkey.c
1> keepalive.c
1> kex.c
1> knownhost.c
1> mac.c
1> mbedtls.c
1> misc.c
1> openssl.c
1> packet.c
1> pem.c
1> publickey.c
1> scp.c
1> session.c
1> sftp.c
1> transport.c
1> 正在生成代码...
1> 正在编译...
1> userauth.c
1> version.c
1> wincng.c
1> 正在生成代码...
1>libssl32MT.lib(libssl-1_1.dll) : warning LNK4006: __NULL_IMPORT_DESCRIPTOR 已在 libcrypto32MT.lib(libcrypto-1_1.dll) 中定义;已忽略第二个定义
1>libssl32MT.lib(libssl-1_1.dll) : warning LNK4221: 此对象文件未定义任何之前未定义的公共符号,因此任何耗用此库的链接操作都不会使用此文件
1> libssh2.vcxproj -> D:\Desktop\libssh2-1.8.0\win32\.\Release_lib\libssh2.lib
========== 全部重新生成: 成功 1 个,失败 0 个,跳过 0 个 ==========
参考文章:
Windows VS2015 编译 libssh2 1.7.0 http://www.mycode.net.cn/language/cpp/1681.html