[openssl-users] How to build libcrypto64*.lib and libssl64*.lib on Windows 64-bit?

Michael Wojcik Michael.Wojcik at microfocus.com
Mon Oct 8 14:54:47 UTC 2018

> From: openssl-users [mailto:openssl-users-bounces at openssl.org] On Behalf Of Short, Todd via openssl-users
> Sent: Monday, October 08, 2018 09:56

> Looks to be debug (d) and multi-thread (MT?) versions of the libraries; not sure what MD stands for.

It's Microsoft's naming convention for their C runtime. MT is multithreaded, statically linked; MD is multithreaded, dynamically linked. The "d" suffix is, as Todd guessed, the debug version.

This is important with Microsoft Visual C, because the various runtimes do not play together. Their heaps, iobs, etc are separate. So, for example, if you link your program with the MT runtime and with a library that was linked with the MD runtime, and your code tries to free memory allocated by the library, you'll get a heap exception (if you're lucky) or heap corruption.

You can get away with mixed runtimes if you're careful - if every module frees the storage it allocates, and you don't try to create a FILE* in one and use it in another, and so on. Nonetheless, it's a gaping architectural flaw, and some packages try to accommodate it by providing equivalent versions of their libraries.

Todd may well be correct that OP is looking at a LibreSSL package, not an OpenSSL one. (LibreSSL isn't "a wrapper for OpenSSL", but whatever.)

Michael Wojcik
Distinguished Engineer, Micro Focus

More information about the openssl-users mailing list