故事背景
项目要求用个sftp客户端上传文件,准备用libcurl,这里把Windows下在VS2005的编译方法记录一下。
需要用到三个库:libcurl和libssh2和openssl
为啥要用libssh2
因为libcurl实现sftp功能依赖libssh2,是对libssh2的封装。
所以也可以直接用libssh2实现sftp。
为啥要用openssl
因为libssh2依赖openssl
下载源码
下载libcurl
链接: https://curl.haxx.se/download/
我这里选择的版本是7.31.0,因为这个版本的VS2005的工程建好了
下载libssh2
链接: https://www.libssh2.org/download/
我这里选择的版本是1.4.3
下载openssl
链接: https://www.openssl.org/source/old/0.9.x/
我这里选择的版本是0.9.8l
如何编译
编译openssl
- 下载并安装所需工具:Perl和NASM,安装完成后检查是否加入环境变量,没加入环境变量的话自己添加一下
- 解压
openssl-0.9.8l.tar.gz
- 进入
openssl-0.9.8l
执行perl configure VC-WIN32
- 编译
nmake -f ms\nt.mak
- 编译完成会在
openssl-0.9.8l\out32
中生成两个文件libeay32.lib
和ssleay32.lib
,这两个文件在编译libssh2中会用到 - openssl编译出来的是静态库
编译libssh2
- 解压源码
libssh2-1.4.3.tar.gz
- 用VC6打开
libssh2-1.4.3\win32\libssh2.dsw
- 将openssl的头文件目录和静态库引入
- 编译
libssh2
这个工程 - 编译完成后会在
Debug_dll
和Release_dll
中生成libssh2.dll
和libssh2.lib
- libssh2编译出来的是动态库
编译libcurl
- 解压源码
curl-7.31.0.tar.gz
- 进入
curl-7.31.0\vs\vc8\lib
打开vc8libcurl.vcproj
- 直接编译是不带sftp功能的,这里libcurl用到了两个宏
USE_LIBSSH2
和HAVE_LIBSSH2_H
,我们需要打开这两个宏并且引入libssh2的头文件和lib文件 - 设置完成后,编译
- 编译完成后会在
Debug
和Release
中分别生成vc8libcurl.dll
和vc8libcurl.lib
如何使用
- 测试程序需要引入libcurl的头文件和lib文件,编译才能通过
- 由于libssh2编译出来的是动态库,所以运行测试程序不仅需要
vc8libcurl.dll
而且还需要libssh2.dll