in src/main/native/org/apache/commons/crypto/OpenSslInfoNative.c [57:73]
static void get_methods(JNIEnv *env, HMODULE openssl)
{
LOAD_DYNAMIC_SYMBOL_FALLBACK(__dlsym_OpenSSL_version_num, dlsym_OpenSSL_version_num, env, openssl, "OpenSSL_version_num", "SSLeay"); // SSLeay fallback needed by LibreSSL 2.x
LOAD_DYNAMIC_SYMBOL_FALLBACK(__dlsym_OpenSSL_version, dlsym_OpenSSL_version, env, openssl, "OpenSSL_version", "SSLeay_version"); // SSLeay fallback needed by LibreSSL 2.x
#ifdef UNIX
Dl_info info;
(void) dladdr(dlsym_OpenSSL_version_num, &info); // ignore the return code
strncpy(dynamicLibraryPath, info.dli_fname, sizeof(dynamicLibraryPath) - 1); // allow for null
#endif
#ifdef WINDOWS
LPWSTR lpFilename;
WCHAR buffer[80];
lpFilename = buffer;
(void) GetModuleFileName(openssl, lpFilename, sizeof(buffer)); // ignore return code
wcstombs(dynamicLibraryPath, buffer, sizeof(dynamicLibraryPath));
#endif
}