Andy Polyakov via RT wrote:
        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...

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've built 0.9.7 with VC 6.0 SP3 as well as VC 7.0 without incident.  I'm wondering if there are any Environment Variables defined that might be altering the build environment.

Also, it would be useful to know which makefile is being used.


Reply via email to