c++获取sftp服务器文件
1,cmd登录
命令:sftp -P 22 username@127.0.0.1
2,sftp工具:WinSCP
3,从github下载win32平台下的sftp代码https://github.com/chenzhongkun/ftp_sftp
sftp文件上传下载依赖libssh2,libss2依赖openssl
libssh2 是一个 C 函数库,用来实现 SSH2 协议
OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库
4,将win32平台下代码转为x64平台下
4.1,编译openssl
https://github.com/openssl/openssl,选择openssl-OpenSSL_1_0_2-stable分支下载
这个程序还用到了libeary32.lib,是openssl生成的静态库,这里没有用到动态链接。我编译了openssl,不过后面发现程序里面自带的libeary.lib不用替换也可以。
openssl编译过程(64位):
1,安装perl(https://strawberryperl.com/), nasm(https://www.nasm.us/),准备源码(https://github.com/openssl/openssl)
2,参考官方文档(https://github.com/openssl/openssl/blob/master/NOTES-WINDOWS.md,非常细致)及(https://bbs.csdn.net/topics/392193545?page=1,https://blog.csdn.net/YAOJINGKAO/article/details/53041165?locationNum=10&fps=1)
3,以管理员身份执行64位vs命令行工具,进入openssl文件夹依次执行一下命令
a.perl Configure VC-WIN64A
参数 含义
debug-VC-WIN32 编译32位debug版本
VC-WIN32 编译32位release版本
debug-VC-WIN64A 编译64位debug版本
VC-WIN64A 编译64位release版本
b.ms\do_win64a.bat(这里很多博客直接写的ma\do_ms.bat,不对,坑。。。)
执行这一步之后,在ms目录下会生成nt.mak和ntdll.mak两个编译配置文件
nt.mak 用于生成静态lib库
ntdll.mak 用于生成动态dll库
c.
【编译openssl静态链接库】 依次执行命令如下:
nmake -f ms\nt.mak
nmake -f ms\nt.mak test
nmake -f ms\nt.mak install
【编译openssl动态链接库】 依次执行命令如下:
nmake -f ms\ntdll.mak
nmake -f ms\ntdll.mak test
nmake -f ms\ntdll.mak install
成功则会在C:\openss\win64目录下生成bin、include、lib、ssl四个文件夹,就可以找到libeary32.lib文件了
4.2,编译libssh2
版本:libssh2-1.8.0,应该是直接使用cmake生成64位vs工程 ?。有报错,不用管。然后用vs打开,进行编译,会在输出目录下看到libssh2.lib
4.3,将ibssh2-1.8.0\buildc\src\Release下libssh2.lib拷贝到sftp\libssh2\下替换。
心得:
LINK开头的错误、未定义标识符的错误,一般都是链接lib库的问题,没有找到对应的lib库或者lib库的版本不对,或者动态库的问题。
配置环境等等先看官方文档,官方文档一般写的很好,而且各种可能会出现的问题都会写到,比起靠百度的运气好很多。cudnn的安装也是。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探