Я работаю над многопоточной многоплатформенной программой на основе Qt, которая использует libssh2. Программа иногда давала сбой внутри crypt_encrypt () и libssh2_transport_write () при одновременной активности нескольких потоков, использующих SSH, поэтому я поискал в Google и нашел некоторые страницы, в которых говорится, что для надежной работы многопоточной библиотеки libssh2 мне нужно вызвать CRYPTO_set_locking_callback () и т. д. перед использованием libssh2.
Основываясь на этом совете, я добавил указанные вызовы callback-setup в начало main () и заставил все это скомпилировать и запустить без сбоев под MacOS / X ... но под Windows теперь я получаю следующие ошибки ссылок, которые я не знаю как исправить.
Компилятор ресурсов Microsoft (R) Windows (R) Версия 6.1.6723.1 Авторские права (C) Корпорация Microsoft. Все права защищены. Связывание ... main.obj: ошибка LNK2019: неразрешенный внешний символ _CRYPTO_set_locking_callback, указанный в функции "void __cdecl do_crypto_locks_setup (void)" (? Do_crypto_locks_setup @@ YAXXZ) main.obj: error LNK_locks_setup @@YAXXZ) do_crypto_locks_setup (void) "(? do_crypto_locks_setup @@ YAXXZ) main.obj: error LNK2019: неразрешенный внешний символ _CRYPTO_num_locks, на который ссылается функция" void __cdecl do_crypto_locks_setup (void_Num_locks) "(? символ _CRYPTO_free, указанный в функции "void __cdecl do_crypto_locks_cleanup (void)" (? do_crypto_locks_cleanup @@ YAXXZ)
Кто-нибудь знает, что мне нужно сделать, чтобы связать эти вызовы под Windows? Есть ли какой-то другой файл .lib, который мне нужно связать, или мне нужно передать определенный флаг команде "perl Configure VC-WIN32", чтобы включить эти функции, или ???
Спасибо Джереми