В моем приложении использовались две сторонние библиотеки. Обе они используют библиотеку OpenSSL как .dll (это означает, что обе библиотеки имеют один общий экземпляр OpenSSL).
Обе они имеют схожие OpenSSL_CleanUp
функции:
void OpenSSL_CleanUp() {
CRYPTO_set_locking_callback(NULL);//1
CRYPTO_set_id_callback(NULL);//1
EVP_cleanup();//1 and 2
CRYPTO_cleanup_all_ex_data();//1 and 2
ERR_remove_state(0);//1 and 2
ERR_free_strings();//1 and 2
}
//1 - this line is present in first lib
//2 - this line is present in second lib
Life Время этих библиотек отличается. Первый может быть загружен несколько раз. Второй будет работать до завершения работы приложения.
Мое приложение выглядит так, как будто оно работает нормально, но, боюсь, побочный эффект не очевиден.