2011-12-01 74 views
3

雖然我嘗試爲windows創建lib文件,但出現了以下錯誤。 請幫忙解決這個問題。Openssl in windows問題

代碼解釋

此行中我居然在Visual Studio命令prompt.This類型將創建OBJ文件和DLL文件的OpenSSL的。

X:\dev\openssl>nmake -f ms\ntdll.mak 

它開始執行make文件,以獲得lib和OBJ文件。

Microsoft (R) Program Maintenance Utility Version 8.00.50727.762 
    Copyright (C) Microsoft Corporation. All rights reserved. 

    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86 

    Copyright (C) Microsoft Corporation. All rights reserved. 

    Building OpenSSL 
    cl /Fotmp32dll\err_all.obj -Iinc32 -Itmp32dll /MD /Ox /O2 /Ob2 -O - DOPENSSL_USE_APPLINK -I. -DOPENSSL_NO_RC5 -DOPENSSL_NO_MD2 -DOPENSSL_NO_KRB5 -DOPENSSL_NO_JPAKE -DOPENSSL_NO_STATIC_ENGINE /I "C:\Program Files\Microsoft SDKs\Windows\v6.0\Include" /I "C:\Program Files\Microsoft SDKs\Windows\v6.0\VC\INCLUDE" /Zi /Fdtmp32dll/lib -D_WINDLL -DOPENSSL_BUILD_SHLIBCRYPTO -c .\crypto\err\err_all.c 

錯誤是在這個文件扔only.When它試圖包含這個文件ocsp.h.

err_all.c 
    X:\dev\openssl\inc32\openssl/ocsp.h(157) : error C2059: syntax error : 'type' 
    X:\dev\openssl\inc32\openssl/ocsp.h(206) : error C2016: C requires that a struct or union has at least one member 
    X:\dev\openssl\inc32\openssl/ocsp.h(206) : error C2059: syntax error : '(' 
    X:\dev\openssl\inc32\openssl/ocsp.h(208) : error C2059: syntax error : '}' 
    X:\dev\openssl\inc32\openssl/ocsp.h(209) : error C2059: syntax error : '}' 
    X:\dev\openssl\inc32\openssl/ocsp.h(350) : error C2016: C requires that a struct or union has at least one member 
    X:\dev\openssl\inc32\openssl/ocsp.h(350) : error C2059: syntax error : '(' 
    X:\dev\openssl\inc32\openssl/ocsp.h(352) : error C2059: syntax error : '}' 
    X:\dev\openssl\inc32\openssl/ocsp.h(404) : error C2059: syntax error : 'type' 
    X:\dev\openssl\inc32\openssl/ocsp.h(405) : error C2059: syntax error : ',' 
     X:\dev\openssl\inc32\openssl/ocsp.h(405) : error C2143: syntax error : missing  ')' before '(' 
    X:\dev\openssl\inc32\openssl/ocsp.h(405) : error C2143: syntax error : missing ')' before '(' 
    X:\dev\openssl\inc32\openssl/ocsp.h(405) : error C2091: function returns function 
    X:\dev\openssl\inc32\openssl/ocsp.h(405) : error C2091: function returns function 
    X:\dev\openssl\inc32\openssl/ocsp.h(405) : error C2143: syntax error : missing '{'  before 'constant' 
    X:\dev\openssl\inc32\openssl/ocsp.h(405) : error C2059: syntax error : '<Unknown>' 
    X:\dev\openssl\inc32\openssl/ocsp.h(405) : error C2059: syntax error : ')' 
     X:\dev\openssl\inc32\openssl/ocsp.h(406) : error C2059: syntax error : ')' 
    X:\dev\openssl\inc32\openssl/ocsp.h(407) : error C2143: syntax error : missing ')'   before '(' 
     X:\dev\openssl\inc32\openssl/ocsp.h(407) : error C2143: syntax error : missing ')' before '(' 
    X:\dev\openssl\inc32\openssl/ocsp.h(407) : error C2091: function returns function 
    X:\dev\openssl\inc32\openssl/ocsp.h(407) : error C2091: function returns function 
    X:\dev\openssl\inc32\openssl/ocsp.h(407) : error C2143: syntax error : missing '{' before 'constant' 
    X:\dev\openssl\inc32\openssl/ocsp.h(407) : error C2059: syntax error : '<Unknown>' 
     X:\dev\openssl\inc32\openssl/ocsp.h(407) : error C2059: syntax error : ')' 
    X:\dev\openssl\inc32\openssl/ocsp.h(407) : error C2059: syntax error : ')' 
    X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2059: syntax error : ',' 
    X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2143: syntax error : missing ')' before '(' 
    X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2143: syntax error : missing ')' before '(' 
    X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2091: function returns function 
    X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2091: function returns function 
     X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2143: syntax error : missing '{' before 'constant' 
    X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2059: syntax error : '<Unknown>' 
    X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2059: syntax error : ')' 
    X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2059: syntax error : ')' 
    X:\dev\openssl\inc32\openssl/ocsp.h(416) : error C2059: syntax error : ',' 
    X:\dev\openssl\inc32\openssl/ocsp.h(416) : error C2143: syntax error : missing ')' before '(' 
    X:\dev\openssl\inc32\openssl/ocsp.h(416) : error C2143: syntax error : missing ')' before '(' 
    X:\dev\openssl\inc32\openssl/ocsp.h(416) : error C2091: function returns function 
    X:\dev\openssl\inc32\openssl/ocsp.h(416) : error C2091: function returns function 
     X:\dev\openssl\inc32\openssl/ocsp.h(416) : error C2143: syntax error : missing '{' before 'constant' 
    X:\dev\openssl\inc32\openssl/ocsp.h(416) : error C2059: syntax error : '<Unknown>' 
    X:\dev\openssl\inc32\openssl/ocsp.h(416) : error C2059: syntax error : ')' 
    X:\dev\openssl\inc32\openssl/ocsp.h(418) : error C2059: syntax error : ')' 
    X:\dev\openssl\inc32\openssl/ocsp.h(420) : error C2143: syntax error : missing ')' before '(' 
    X:\dev\openssl\inc32\openssl/ocsp.h(420) : error C2143: syntax error : missing ')' before '(' 
    X:\dev\openssl\inc32\openssl/ocsp.h(420) : error C2091: function returns function 
X:\dev\openssl\inc32\openssl/ocsp.h(420) : error C2091: function returns function 

    X:\dev\openssl\inc32\openssl/ocsp.h(425) : error C2143: syntax error : missing ')'   before '(' 
    X:\dev\openssl\inc32\openssl/ocsp.h(425) : error C2143: syntax error : missing ')' before '(' 
    X:\dev\ openssl\inc32\openssl/ocsp.h(425) : error C2091: function returns function 
    X:\dev\openssl\inc32\openssl/ocsp.h(425) : error C2091: function returns function 
    X:\dev\openssl\inc32\openssl/ocsp.h(425) : error C2143: syntax error : missing '{' before 'constant' 
    X:\dev\openssl\inc32\openssl/ocsp.h(425) : error C2059: syntax error : '<Unknown>' 
    X:\dev\openssl\inc32\openssl/ocsp.h(425) : error C2059: syntax error : ')' 
    X:\dev\openssl\inc32\openssl/ocsp.h(425) : error C2059: syntax error : ')' 
    X:\dev\openssl\inc32\openssl/ocsp.h(427) : error C2143: syntax error : missing ')' before '(' 
    X:\dev\openssl\inc32\openssl/ocsp.h(427) : error C2143: syntax error : missing ')' before '(' 
    X:\dev\openssl\inc32\openssl/ocsp.h(427) : error C2091: function returns function 
    X:\dev\openssl\inc32\openssl/ocsp.h(427) : error C2091: function returns function 
     X:\dev\openssl\inc32\openssl/ocsp.h(427) : error C2143: syntax error : missing '{' before 'constant' 
     X:\dev\openssl\inc32\openssl/ocsp.h(427) : error C2059: syntax error : '<Unknown>' 
    X:\dev\openssl\inc32\openssl/ocsp.h(427) : error C2059: syntax error : ')' 
    X:\dev\openssl\inc32\openssl/ocsp.h(428) : error C2143: syntax error : missing ')' before '(' 
    X:\dev\openssl\inc32\openssl/ocsp.h(428) : error C2143: syntax error : missing ')' before '(' 
    X:\dev\openssl\inc32\openssl/ocsp.h(428) : error C2091: function returns function 
    X:\dev\openssl\inc32\openssl/ocsp.h(428) : error C2091: function returns function 
    X:\dev \openssl\inc32\openssl/ocsp.h(428) : error C2143: syntax error : missing '{' before 'constant' 
    X:\dev\openssl\inc32\openssl/ocsp.h(428) : error C2059: syntax error : '<Unknown>' 
     X:\dev\openssl\inc32\openssl/ocsp.h(428) : error C2059: syntax error : ')' 
     X:\dev\openssl\inc32\openssl/ocsp.h(428) : error C2059: syntax error : ')' 
     X:\dev\openssl\inc32\openssl/ocsp.h(430) : error C2143: syntax error : missing ')' before '(' 
    X:\dev\openssl\inc32\openssl/ocsp.h(430) : error C2143: syntax error : missing ')' before '(' 

    X:\dev\openssl\inc32\openssl/ocsp.h(430) : error C2059: syntax error : '<Unknown>' 
    X:\dev\ openssl\inc32\openssl/ocsp.h(430) : error C2059: syntax error : ')' 
     X:\dev \openssl\inc32\openssl/ocsp.h(435) : error C2059: syntax error : ')' 
    X:\dev\openssl\inc32\openssl/ocsp.h(437) : error C2143: syntax error : missing ')' before '(' 

編譯止於此:

 X:\dev\openssl\inc32\openssl/ocsp.h(437) : fatal error C1003: error count exceeds 100; stopping compilation 
    cl : Command line warning D9035 : option 'O' has been deprecated and will be rem 
    oved in a future release 
    NMAKE : fatal error U1077: '"C:\Program Files\Microsoft SDKs\Windows\v6.0\VC\Bin 
    \cl.EXE"' : return code '0x2' 
    Stop. 
+0

您在nmake之前運行過vcvars32.bat嗎? – SKi

回答

1

這些都是命令行調用我的問題建立OpenSSL的靜態庫在MSVS。我認爲他們應該用同樣的方法代替你調用的dll makefile。

call "%VS90COMNTOOLS%\vsvars32.bat" 
perl Configure VC-WIN32 
call ms\do_nasm 
nmake -f ms\nt.mak clean 
nmake -f ms\nt.mak 

你可以在這裏找到NASM:www.nasm.us

0

首先我得到了同樣的錯誤。 也許這是因爲我第一次沒有正確開始? 所以我只是刪除了整個工作文件夾的OpenSSL 1.0.1e 的文件夾中提取的新鮮tar文件

開始的Visual Studio 2012命令提示符管理 (VS2012 86本機工具命令提示符...的runAs管理員) 新增Perl和NASM的路徑 perl的配置VC-WIN32前綴= C:\ OpenSSL的 呼叫MS \ do_nasm NMAKE -f MS \ nt.mak

一切就OK了..

3

已經奮鬥與Linux上的MinGW交叉編譯相同的問題。

縱觀預處理源的問題是顯而易見的:

typedef struct ocsp_request_st 
{ 
OCSP_REQINFO *tbsRequest; 
OCSP_SIGNATURE *optionalSignature; 
} ((LPCSTR) 66) 

struct ocsp_responder_id_st 
{ 
int type; 
union { 
    ((LPCSTR) 7)* byName; 
     ASN1_OCTET_STRING *byKey; 
    } value; 
}; 

不知怎的,在加密/ ossl_typ.hOPENSSL_SYS_WIN32具體和#undef塊似乎沒有任何效果。

加密/ ERR/err_all.c明確添加

#undef OCSP_REQUEST 
#undef X509_NAME 
#undef OCSP_RESPONSE 

#include <openssl/ocsp.h> 

之前修復它。

不幸的是,之後我又遇到了另一個問題......