On Sun, May 31, 2009 at 4:00 PM, Danny Mayer <[email protected]> wrote: > The OpenSSL libraries need to exactly match the binaries which build > against it. Unfortunately, the OpenSSL libraries do not try and keep the > ordinals the same between releases so you cannot depend on the dll from > the 0.9.8c release to match that from the 0.9.8d release. For this > reason I always make the builds copy the dll and install into its own > directory along with the specific libeay32.dll that it was built with. > This, among other things, mean that you cannot install the binaries into > system32, wnich you shouldn't do anyway. This also means that you end up > with multiple copies of libeay32.dll for various applications that need > OpenSSL. If the OpenSSL team had created and maintained a .def file with > ordinals in it, this wouldn't have been a problem but they don't do that.
They must have done something which is really ill-advised and not default, namely, provided import libraries for their DLLs which link by ordinal only. This was common with OS/2 and Win16 NE binaries, but is very uncommon in Win32. Typically, imports are done by name. The way to avoid string comparisons during DLL loading is to "bind" your EXEs and DLLs at installation time to the installed system DLLs, which causes them to already have the correct patches in their IAT (import address table) for the system DLLs, which are the only ones that vary from the build environment. Undoubtedly someone's misguided attempt at optimization (along with failing to respect the need to then keep ordinals unchanged between releases, as you note) has resulted in this pain. For OpenSSL DLLs, importing by name would make them less fragile to slightly differing versions and would slow load times only for those that don't rebind (and even then the extra time is trivial on modern processors compared to other considerations like I/O speed). Cheers, Dave Hart _______________________________________________ questions mailing list [email protected] https://lists.ntp.org/mailman/listinfo/questions
