Katie Lucas a écrit :
On Mon, Nov 07, 2005 at 05:37:59PM +0100, Julien ALLANOS wrote:

Julien ALLANOS a écrit :

Hello,

I have a Win32 application that uses OpenSSL 0.9.8a, libxml2, xmlsec, and other libraries. Thus I have to build them all using the same link configuration (/MD). However I want to be able to debug my application, and have both Release and Debug versions of every libraries in the same time on disk. Is there a way to build libeay32D.{lib|dll}, ssleay32D.{lib|dll} and opensslD.exe, using the current win32 build process?

Thanks,

Actually, I have an application and a DLL. The DLL depends on the previous libraries. And I just saw the applink.c tip in the FAQ. As I don't really want to debug OpenSSL, but rather my application and my DLL, I have included applink.c in my DLL project, compiled it in Debug mode (/MDd) against a Release (/MD) libeay32, compiled the executable in Debug mode and ran it. I get the "no OPENSSL_Applink" error again. Any help please? Thanks.


You need to do some jiggery-pokery to get the Applink table to appear
properly named in the symbol table.

We had to declare it (using Borland) as;

extern "C"
{

  __declspec(dllexport) void** PASCAL OPENSSL_Applink(void)
  {
    ...
  }
}

The "extern C" stops name mangling happening, the "Pascal" stops an
underscore being prepended to the name. The "__declspec(dllexport)" is
needed to stop the linker going "hey, this isn't mentioned, I'll
remove it".

It's not mentioned otherwise because the Uplink system uses
"GetProcAddress" to provide runtime name resolution instead of a
compile-time dependency.


It still doesn't work. And the xmlsec building process doesn't include applink.c, so I would rather be interested in building a Debug version of OpenSSL, but changing names of libraries to add a "D" (libeay32D, ssleay32D...), to be able to have Release and Debug versions side by side.

For the moment, I have:

1/ set "mk1mf.pl debug" into ms\do_masm.bat

2/ run perl Configure VC-WIN32

3/ run ms\do_masm.bat

4/ replaced:

 * SSL=ssleay32 by SSL=ssleay32D
 * SSL=ssleay32 by SSL=ssleay32D

in ms\ntdll.mak

5/ run nmake.exe /f ms\ntdll.mak

I get libeay32D.{lib|dll} and ssleay32D.{lib|dll}, which looks fine, but actually ssleay32.dll get linked against libeay32.dll, not libeay32D.dll!!

Any hint please? Thanks!
--
Julien ALLANOS
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to