First of all I figured it out that i should use SHLIB_EX_OBJ not APP_EX_OBJ :))
Keep in mind that the instructions were provided off the top of my head and not actually tested, which is why it's so "bumpy." Bear with me:-)
Second if I add both uplink.obj and uptable.obj to SHLIB_EX_OBJ then I cannot link libeay32.dll: link /nologo /subsystem:console /opt:ref bufferoverflowU.lib /dll /out:o ut32dll\libeay32.dll /def:ms/LIBEAY32.def @C:\DOCUME~1\admin\LOCALS~1\Temp\nm118 3.tmp uplink.obj : error LNK2005: OPENSSL_UplinkTable already defined in uptable.obj uplink.obj : error LNK2005: $lazy1 already defined in uptable.obj
Did you recompile uplink.obj from uplink.c? I bet not, because uplink.obj [if recompiled from uplink.c] can't contain definitions of $lazyN.
If I add only uptable.obj then it can create libeay32.dll successfully.
Yes, but it does not mean that Applink is functional. You have to link both uplink.obj [compiled from .c] and uptable.obj [compiled from .asm].
However I cannot link ssleay32.dll. So I figured it out that I do not need uptable.obj to link ssleay32.dll so I rewrite the ntdll.mak file:
That is correct.
So finally successful to build on amd 64 both statically and dynamically. Thanks a lot. All tests are also successful.
Idea behind [up/app]link is to make it possible to use .dll with application compiled with different compiler flags [/M* ones to be specific]. Applink doesn't get engaged when application is compiled with same flag as .dll, such as test applications. In other words you've got *something* working, but it's *not* what *we* had in mind. So do give it another try:-) A.
______________________________________________________________________ OpenSSL Project http://www.openssl.org Development Mailing List openssl-dev@openssl.org Automated List Manager [EMAIL PROTECTED]