Reputation: 298
While I try to create lib files for windows.The following error came. Please help on this issue.
CODE Explanation
This Line I actually typed in visual studio command prompt.This will create the obj and dll files for OpenSSL.
X:\dev\openssl>nmake -f ms\ntdll.mak
It start executing make files to get the lib and obj files.
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
The Error is throwing in this file only.When it tries to include this file 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 '('
The compilation stops here:
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.
Upvotes: 4
Views: 3393
Reputation: 411
Have been fighting the same issue with a MinGW cross-compile on Linux.
Looking at the pre-processed source the issues are obvious:
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;
};
Somehow the OPENSSL_SYS_WIN32 specific #undef block in crypto/ossl_typ.h seems to have no effect.
Explicitly adding
#undef OCSP_REQUEST
#undef X509_NAME
#undef OCSP_RESPONSE
before
#include <openssl/ocsp.h>
in crypto/err/err_all.c fixes it.
Unfortunately I hit another issue afterwards...
Upvotes: 5
Reputation: 139
First I got the same error. Maybe this was because I did not start correctly the first time ? So I just erased the whole working folder openssl-1.0.1e Extracted a fresh tar file in the folder
Started visual studio 2012 command prompt as admin ( VS2012 x86 native tools command prompt ... runAs Administrator) Added perl and nasm to the path perl Configure VC-WIN32 --prefix=c:\openssl call ms\do_nasm nmake -f ms\nt.mak
everything ok ..
Upvotes: 0
Reputation: 1213
These are the command line calls I issue to build OpenSSL static libs in MSVS. I assume they should work the same substituting the dll makefile you're calling, as well.
call "%VS90COMNTOOLS%\vsvars32.bat"
perl Configure VC-WIN32
call ms\do_nasm
nmake -f ms\nt.mak clean
nmake -f ms\nt.mak
You can find NASM here: www.nasm.us
Upvotes: 1