So I've read this thread, and had a look at the code. What do I have to do to fix this error? (exactly) Thank you! Brendan Law <original thread> The ticket #425 is indeed closable.
That note "#define OPENSSL_EXPORT_VAR_AS_FUNCTION" made me check my own doings again (with a magnifying glass)... That error ended up being my careless mistake :-( Sorry for all the trouble. OpenSSL is doing everything right. Combination: NT4 + SP6a + VC++(12.00.8804) passed all the tests. Yours VW -----Original Message----- From: Stephen Henson via RT [mailto:[EMAIL PROTECTED] Sent: Thursday, January 02, 2003 2:53 AM To: [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Subject: [openssl.org #425] Build error on Windows NT4? [EMAIL PROTECTED] - Wed Jan 1 18:40:53 2003]: > > > cl ... -c .\crypto\asn1\n_pkey.c > > > .\crypto\asn1\n_pkey.c(96) : error C2370: > 'NETSCAPE_ENCRYPTED_PKEY_it' : > > > redefinition; different storage class > > > .\crypto\asn1\n_pkey.c(93) : see declaration of > > > 'NETSCAPE_ENCRYPTED_PKEY_it' > > > > Strange, I checked VC++ 6.0 SP3 and had no problems. What version of > > VC++ are you using? > > First of all I want to make it clear that I do *not* have environment > for VC-WIN32 build. All I say here is based on experinence not related > to OpenSSL. > > How does one tell VC++SP level? I couldn't find a way. It's probably > more appropriate to ask for version number returned by cl. Mine says > 12.00.8804... > Well the version is in the about box of visual studio. Not sure about the SP level, I just know I installed SP3 on this box and I'll try SP5 when I can find time to download the 100Mb or so of it... I also have cl version 12.00.8804 BTW > In either case I believe it's OPENSSL_EXTERN which is "responsible" > for > this. On Windows OPENSLL_EXTERN is[?]/can be defined as "extern > _declspec(dllimport)" and the problem must be that n_pkey.c refers to > same variable as both local and OPENSSL_EXTERN. The catch is that > _decspec(dllimport) is [and has to be] treated differently. Most > notably > "_declspec(dllimport) int i; int foo(){return i;}" effectively > compiles > as "int *_i; int foo() {return *_i;}." As you can see generated > machine > code has to be substantially different from one generated for plain > "int > i; int foo(){return i;}" and this is what the compiler must be > complaining about. At the very least if I try to compile "int > i;_declspec(dllimport) int i;" I get the very same error code, C2370. > > A. > I was a little puzzled by the original report. Because it seems to be complaining about the NETSCAPE_ENCRYPTED_PKEY_it variable whereas under Win32 this should in fact be a function. Win32 should #define OPENSSL_EXPORT_VAR_AS_FUNCTION which causes a different part of asn1t.h to be used. This should end up being written to opensslconf.h when perl Configure VC-WIN32 is initially called. So the original poster might want to check to see if this is the case... ______________________________________________________________________ OpenSSL Project http://www.openssl.org Development Mailing List [EMAIL PROTECTED] Automated List Manager [EMAIL PROTECTED]