1、目录使用 VC6 编译 Curl 和 LibCurl .2编译 Openssl 2编译 zlib2编译 libssh2 2VC6 编译 libssh24libssh2 动态编译 6编译 LibCurl7方法一: 7方法二:使用 Makefile.vc6 编译 12编译 Curl.13小结 15使用 VC6 编译 Curl 和 LibCurl编译 Openssl下载 Openssl 源码下载 Perl一、 cmd 切换到 openssl-1.0.2d,输入命令perl Configure VC-WIN32 no-asmmsdo_ms nmake -f msntdll.mak (动态编译)nmak
2、e -f nt.mak (静态编译)编译 zlibcd C:curlzlib-1.2.8nmake -f win32/Makefile.msc OBJA=“inffast.obj“ 编译 libssh2检测后发现 libssh2 没有编译,因为源码都没有下载。最新版本下载地址:http:/libssh2.org/download/libssh2-1.6.0.tar.gz解压打开 C:libssh2-1.6.0win32config.mk修改 openssl 和 zli 的路径。这里使用 OPENSSLINC=C:opensslinclude 时编译错误!使用OPENSSLINC=C:opens
3、slinc32 不出错。下面的 C:opensslout32dll 改为 C:opensslout32,生成的就是静态的文件。使用 VS2010 的 nmake /f Nmakefile生成成功:只是生成了 libssh2.dll,没有库文件。VC6 编译 libssh2设置下头文件设置动态库编译出错:解决方法:打开 C:libssh2-1.6.0srcsession.c写入代码,定义了宏,避免对其它版本的编译器造成影响。/ 解决 VC 6 error C2065: socklen_t : undeclared identifier#if defined(_MSC_VER) #endif/编译
4、成功!注意 Win32 OpenSSL DLL Release 默认只生成 dll 文件,新建一个 TextFile,名字随便,后缀名为 def,重新编译就可以生成动态链接库的 lib 文件。这个文件直接使用静态编译的就可以了。复制需要的 lib 到 libcurl 中,编译 libcurl 就可以支持 libssh2 了。可以选择静态还是动态的 lib 文件。在 C:curl-7.45.0libconfig-win32.h 加入链接库#pragma comment(lib,“C:/libssh2-1.6.0/win32/Release_dll/libssh2.lib“) Lib 中加入 li
5、b 的路径,生成的就是动态库版本libssh2 动态编译虽然可以直接动态编译,但是生成的文件中没有 lib 文件,libcurl+ssh2 的动态编译无法成功。打开 C:libssh2-1.6.0include libssh2.h里面有关于与这方面的定义,添加对于的处理器定义就可以了。发现上面的 LIBSSH2_WIN32 和_WINDLL 为黑色,就是没有定义。那么要添加的定义就是这两个:LIBSSH2_WIN32,_WINDLL编译后就生成功了!编译 LibCurl方法一:VC6 项目编译现在是 2015 年 11 月 15 日星期日从官方网站下载了最新的 Curlhttp:/curl.h
6、axx.se/download/curl-7.45.0.zip解压后,打开 C:curl-7.45.0projectsWindows,可以看到有项目工程。curl-all.dsw 项目中包行了多种编译模式。其中 OpenSSL 需要下载 OpenSSL默认路径安装好 Perl,下载好 Openssl 的源码解压到 C 盘下,重命玮 openssl。修改部分源码,VC 不支持 VC99,有些代码需要转换打开C:curl-7.45.0libconfig-win32.h/ VC6 是 C98#if defined(_MSC_VER) #endif/ VC6 缺省是不定义_WIN32_WINNT 宏的
7、#ifndef _WIN32_WINNT #define _WIN32_WINNT 0x0400 #endif#include “windows.h“#include “Wincrypt.h“C:curl-7.45.0libcurl_ntlm_core.ctw = (long long)time(NULL) + 11644473600ULL) * 10000000ULL;报错:bad suffix on number替换为/long long 在 linux 下的 gcc/g+里面,搞版本的 VS 也是支持的/_int64 是 windows 专用的,被 vc、gcc 等编译器支持#if de
8、fined(_MSC_VER) unsigned _int64 bb = 10000000;tw = (_int64)time(NULL)+aa) * bb;#elsetw = (long long)time(NULL) + 11644473600ULL) * 10000000ULL; /保持原来的代码不变#endifCmd 打开Program FilesMicrosoft Visual StudioVC98BinVCVARS32.BAT。cd 到 C:curl-7.45.0projects 输入编译参数 build-openssl.bat vc6 x86 release这个三个参数分别是 V
9、C 的版本 vc6vc14,编译平台 x86 或 x64 和 release 或者 debug。提示出错的 vc6 is not installed解决方法:设置下 VC 的路径if /i “%1“ = “vc6“ (set VC_VER=6.0set VC_DESC=VC6set “VC_PATH=“D:Program FilesMicrosoft Visual StudioVC98“修改 VC 的路径为 set “VC_PATH=“D:Program FilesMicrosoft Visual StudioVC98“注意是三个”。回车就开始编译了编译成功!生成了 5 个文件,其中带 SSH
10、2 的是没有生成成功的。方法二:使用 Makefile.vc6 编译首先使用 perl 需要处理下 openssl 的源码:perl Configure debug-VC-WIN32 no-asm -prefix=%CD%msdo_msrem Configuring 64-bit Debug Buildperl Configure debug-VC-WIN64A -prefix=%CD%msdo_win64arem Configuring 64-bit Release Buildperl Configure VC-WIN64A -prefix=%CD%msdo_win64arem Config
11、uring 32-bit Debug Buildperl Configure debug-VC-WIN32 no-asm -prefix=%CD%msdo_msrem Configuring 32-bit Release Buildperl Configure VC-WIN32 no-asm -prefix=%CD%msdo_ms统一编译命令:nmake -f msnt.maknmake -f msntdll.makcmd 打开Program FilesMicrosoft Visual StudioVC98BinVCVARS32.BATcd C:curl-7.45.0lib注意不要有空格!路径
12、可以使用绝对路径,修改成对应的set OPENSSL_PATH=C:openssl-1.0.2dset ZLIB_PATH=C:zlib-1.2.8set LIBSSH2_PATH=C:libssh2-1.6.0输入编译设置nmake -f Makefile.vc6 CFG=release-ssl-ssh2-zlib编译结果:这里的选项可以根据实际需要来编译这个脚本写的挺好的,使用起来超级方便。编译 Curl直接打开 Curl 的工程进行编译就可以了。提示缺少文件的直接从编译好的 LibCurl、openssl、libssh2 中复制复制 libcurl.lib 到这个目录就可以了小结以上的每一个都可以成功编译了。就可以直接打开C:curl-7.45.0projectsWindowsVC6curl-all.dsw根据需要编译不同的版本,如果编译出错的设置下头文件和库文件。Openssl zlip libssh2一个由多个项目组成的软件,在编译的时候在 lib 下设置路径时选择动态库链接生成的文件夹,那软件就是动态库版本。选择静态库链接,生成的文件就是静态库版本。!VC6 编译好的成品 ,包括动静态文件和可执行文件,咨询本文库的作者:want*