Hello all,

I am working on porting a linux app that depends on OpenSSL to windows
and ran into the visual studio 2009 "c2226" unexpected type "LPCSTR".
The order of #includes that can generate this error is shown below.
Note that only ssl includes are used.  Adding a #undef X509_NAME after
the rand include fixes the problem, BUT only if rand is included
before engine.  I looked at both header files and noticed that rand
includes windows.h, which causes the problem.  Also, engine.h includes
rand.h.   Rand does not use the X509_NAME type within its header
definition, but engine does.

Long story short, I think rand.h should undefine X509_NAME immediately
after its include of windows.h....this seemed to fix my problems.  The
other solution was to include rand, undefine the name, then include
engine.

I ran into a previous post on the net to use the NOCRYPT option which
forces visual studio to not include the windows crypto api's, which is
ultimately the culprit in redefining X509_NAME.  This worked as well,
but I didn't feel it was the correct solution.

Chime in and let me know if I am off base here or if the rand.h header
fix is a valid one.

Code:
#include <openssl/ssl.h>
#include <openssl/rand.h>
// do the following if proposed fix to rand.h is not there
// this only works if engine.h follows rand.h, at least In
// my initial screwing around
// undef X509_NAME
#include <openssl/engine.h>
#incude <openssl/err.h>
#include <openssl/x503v3.h>
#include <openssl/fips.h>


Cheers,

--Domingo
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to