2010-05-21 124 views
4

question #197444的帮助下,我设法在Visual Studio 2010 IDE,OpenSSL 1.0.0和zlib 1.2.5内的Windows上从源代码构建cURL & libcurl。我看到的问题是,在目前,如果我运行生成的curl.exe的说法-V,那么版本,它报告使用Visual Studio 2010构建cURL和libcurl

curl 7.20.1 (i386-pc-win32) libcurl/7.20.1 OpenSSL/0.9.8d zlib/1.2.3 
Protocols: dict file ftp ftps http https imap imaps ldap pop3 pop3s rtsp smtp smtps telnet tftp 
Features: AsynchDNS Largefile NTLM SSL libz 

注汇报了OpenSSL的& zlib的不匹配版本如果我真的用过。任何想法如何解决这个问题?

p.s.是否有可以编译到libcurl中的可选组件清单以及要使用的选项/预处理器指令? (例如SSPI,libidn,...?)

+0

这可能是显而易见的,但你尝试搜索项目那些版本字符串?它们可以在curl或图书馆中进行硬编码。可能需要进行一些配置(即运行脚本文件)以获取真实版本字符串。 – Luke 2010-05-30 12:41:16

+0

是的,我试过搜索。发现定义了我不记得SSL或zlib的宏。它在自己的头文件中正确定义了curl包含在SSL/zlib中。我似乎已经尝试了名称中包含SSL和/或zlib的所有宏。没有快乐。 :(我甚至不知道curl从哪里得到了错误的版本号,这些数字似乎并没有出现在其源代码中的任何地方 – KTC 2010-05-30 18:19:25

回答

2

我快速浏览了curl源代码,它从DLL中动态获取这些版本号,而不是从任何静态源获取这些版本号。所以这些是实际加载到curl过程中的库的版本,而不是用于构建curl源的库的版本。您的系统上可能有较旧版本的库,正在由curl进程加载。

+0

除了它现在拒绝使用zlib构建这个事实......这很好,谢谢。:) – KTC 2010-05-31 03:37:56

1

我建立的命令行cURL和libcurl的这个批处理文件

@echo off 

rem assumes OpenSSL at ../../openssl-1.0.0a 
rem assumes zlib at ./../zlib-1.2.5 and built with static runtime libraries (/MT) 

echo "Add '#define HAVE_LDAP_SSL 1' to lib\config-win32.h" 
notepad lib\config-win32.h 
pause 

cd lib 
nmake -f Makefile.vc9 clean 
nmake -f Makefile.vc9 OPENSSL_PATH=../../openssl-1.0.0a ZLIB_PATH=../../zlib-1.2.5 RTLIBCFG=static CFG=release-ssl-zlib 

cd .. 
cd src 
nmake -f Makefile.vc9 clean 
nmake -f Makefile.vc9 OPENSSL_PATH=../../openssl-1.0.0a ZLIB_PATH=../../zlib-1.2.5 RTLIBCFG=static CFG=release-ssl-zlib 

而这就是我得到的版本

curl 7.21.0 (i386-pc-win32) libcurl/7.21.0 OpenSSL/1.0.0a zlib/1.2.5 
Protocols: dict file ftp ftps http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp 
Features: AsynchDNS Largefile NTLM SSL libz 
+0

适合我,但是如何在不包含'SSH2_PATH'的情况下获得sftp支持对我来说是一种魔力。 – GuySoft 2013-08-19 14:27:09