> An easy way to figure out where the dependencies lie are to compare the
> data structure
> definitions in the CRT headers. 

As was pointed out earlier, data structure definitions are apparently
not the only concern:-(

> If there are #ifdef's in the data
> structure definition
> then you know there is a guarranteed compatibility issue.

In MSVCRT case structures are all the same in all combinations of MT and
debug and it's multiple copies of global structures (in stdio case it's
most notably __iob and __pioinfo arrays) which cause the trouble. For
the reference, source code for MSVCRT is available in Microsoft Platform
SDK under src/crt.

As for "with the BIO code I am not sure this is a possibility." Note
that once compiled and linked with MSVCRT, BIO would actually work fine
with any run-time environment, because it never exposes FILE * to the
application and sticks to private __iob, private to OpenSLL .DLL, in
cases when application uses incompatible stdio. The real problem is
"grep 'FILE \*' include/openssl/*".

Bottom line. In order to make OpenSSL independent from Windows compiler
run-time, it's appears to be necessary to [at least!] eliminate FILE *
references from exposed API.

> We have the following variables which we want to express in the name of
> the dll:
> 
>    1. run-time library [compiler x threading x debugging]
> 
>           Compilers:
>             msvc 6.0
>             msvs .net
>             msvs .net 2003
>             others?

Given the variety of run-times getting rid of FILE * in API might appear
as viable alternative, huh? Unless of course Microsoft and few others
(e.g. Borland?) can *guarantee* internal consistency over different
releases.

>           Threading;
>             linked to threaded run-time
>             linked to non-threaded run-time

I see no need for having non-threaded version (as there is no MT
MSVCRT). MT build should siffice for all purposes.

>           Debugging:
>             linked to debugging run-time
>             linked to non-threaded run-time

For the sole reason to provide for common copy of global run-time
variables (as mentioned above). This is *very* unfortunate sutiation in
my personal opinion.

>    2. 32-bit vs 64-bit

Is normally solved through search pathes. At least when it comes to
installing a .DLL next to other system DLLs, you *have to* put 32- and
64-bit ones to *different* catalogs.

A.
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to