赞
踩
公司MFC项目需要实现文件上传到SFTP服务器的功能,因此引入第三方库libssh2。
库版本libssh2 1.10.0,库版本要与windows SDK适配。
这里使用OpenSSL v3.2.1,根据需要安装 Win64 或者 Win32 版本。
编译环境:VS2019 , windows10 x64
1、解压libssh2-1.10.0.tar.gz,进入libssh2-1.10.0\win32,用VS2019运行libssh2.dsw。
2、将openssl头文件包含到项目中。
3、生成lib库。
配置选择为openSSL LIB Debug ,平台为x86(64位软件选择x64)。
右键项目libssh2,生成lib库。
默认生成路径
1>libssh2.vcxproj -> XXXXX\XXXXXX\libssh2-1.10.0\win32\Debug_lib\libssh2d.lib
degug版本的lib库,名字一般多带一个“d”。
4、运行test
设置配置管理器。
报错 “/ZI”和“/Gy-”命令行选项不兼容,修改调试信息格式为“无”。
配置选择为Debug ,平台为x86。
右键项目tests,生成exe可执行文件。
5、报错 无法打开文件“libeay32.lib”和"ssleay32.lib",需要编译1.x.x版本的openSSL 获得。
6、还需要zlib.lib。
windows下zlib库的编译与使用_zlib 静态编译-CSDN博客
7、报错 libeay32.lib 无法解析的外部符号 __imp__CertOpenStore@20,函数 _capi_open_store 中引用了该符号 。
询问GPT得知缺少了库“Crypt32.lib” 和“libcrypto.lib”。
用Everything搜索,路径如下
D:\Windows Kits\10\Lib\10.0.19041.0\um\x86\Crypt32.Lib。
C:\Program Files (x86)\OpenSSL-Win32\lib\VC\x86\MDd\libcrypto.lib
8、设置附加依赖项
依赖项中添加"Crypt32.Lib"和"libcrypto.lib"。
将"libssh2d.lib","libeay32.lib","ssleay32.lib","zlib.lib","Crypt32.Lib","Crypt32.Lib","libcrypto.lib"拷贝到项目根目录(libssh2.dsw所在目录)。
Windows系统下的SFTP服务器搭建与公网访问 - 知乎 (zhihu.com)
参考
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。