2010-05-21 156 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