程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 在Windows Visual C++ 6.0/7.0下編譯帶ssl的curl庫

在Windows Visual C++ 6.0/7.0下編譯帶ssl的curl庫

編輯:.NET實例教程
libcurl with SSL

1.  安裝PerlActivePerl-5.8.0.806-MSWin32-x861.msi

2.  編譯OpenSSL:(Windows/VC下編譯成DLL

a)         下載openssl,目前版本是:openssl-0.9.8g

b)        解壓,比如:D:\.

c)        cd d:\openssl-0.9.8g

d)        perl Configure VC-WIN32

e)         ms\do_masm.bat,或者ms\do_ms.batms\do_nasm.bat

f)         VCStudioVC98VC6,在.Net下是VC7)目錄,運行:vcvars32.bat

g)        回到d:\openssl-0.9.8g,運行:nmake -f ms\ntdll.mak

h)        如果成功的話,會在out32dll目錄下生成libeay32.dll, libeay32.lib, ssleay32.dll, ssleay32.lib

在編譯的時候,可能會出現以下問題:

Assembling: .\crypto\sha\asm\sha512-sse2.asm .\crypto\sha\asm\sha512-sse2.asm(29) : error A2006: undefined symbol : XMMWord。

這是因為:.\crypto\perlasm\x86ms.pl中對masm的版本定義不對,OpenSSL網站上給出一個此文件的補丁:

openssl/crypto/perlasm/x86ms.pl     1.18.2.3 -> 1.18.2.4

--- x86ms.pl    2007/07/19 10:45:03 1.18.2.3

+++ x86ms.pl    2007/10/21 14:15:40 1.18.2.4

@@ -339,8 +339,17 @@sub main''file_end

    {

    # try to detect if SSE2 or MMX extensions were used...

-   if (grep {/\b[x]?mm[0-7]\b,/i} @out) {

-       grep {s/\.[3-7]86/\.686\n\t\.XMM/} @out;

+   my $xmmheader=<<___;

+.686

+.XMM

+IF \@Version LT 800

+XMMWord STRUCT 16

+   DQ  2 dup (?)

+XMMWord ENDS

+ENDIF

+___

+   if (grep {/\b[x]?mm[0-7]\b/i} @out) {

+       grep {s/\.[3-7]86/$xmmheader/} @out;

        }

    push(@out,"_TEXT\$  ENDS\n");

    push(@out,"END\n");

但是仍然不對,所以干脆用NASM,回退到步驟e),運行ms\do_nasm.bat,然後依然按照下面的步驟進行。

3.  編譯Libcurl

a)         下載curl源代碼,當前版本是curl-7.17.1

b)        解壓

c)        VCStudioVC98VC6,在.Net下是VC7)目錄,運行:vcvars32.bat。(由於安裝OpenSSL的時候已經做過,這步可省略)

d)        添加環境變量:OPENSSL_PATH=D:\openssl-0.9.8g

e)         curl目錄下,運行nmake vc-ssl-dll

f)         成功,則在.\lib下生成libcurl.lib

g)        要得到libcurl.dll,可以運行.\lib\curllib.dsw,這是一個Visual Studio 6.0的工程,編譯成功後可在.\lib\Debug下生成libcurl.dll

其中,可能出現如下錯誤:

…\lib\ldap.c(49) : fatal error C1189: #error :  Your Platform SDK is NOT sufficIEnt for LDAP support! Update your Platform SDK, or disable

 LDAP LDAP support!

原因是在ldap.c中會出現# include <winldap.h>,將winldap.h所在目錄加到工程的project->Setting->C/C++->Category:Preprocessor->Additional include DirectorIEs中去即可。

另外,OpenSSLCurlinclude目錄opensslcurl分別在各自主目錄的inc32include下。在編程時轉移到資源目錄或者直接include即可。

有關curl的資料可以在http://curl.haxx.se找到。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved