我正在开发一个使用 libssh2 的多线程多平台基于 Qt 的程序。当几个使用 SSH 的线程同时处于活动状态时,该程序偶尔会在 crypt_encrypt() 和 libssh2_transport_write() 内部崩溃,所以我四处搜索,发现一些页面说要使多线程 libssh2 可靠地工作,我需要调用 CRYPTO_set_locking_callback(),等,在使用 libssh2 之前。
基于该建议,我将指定的回调设置调用添加到 main() 的顶部,并使其全部编译和运行,而不会在 MacOS/X 下崩溃……但在 Windows 下,我现在收到以下链接错误不知道如何解决。
Microsoft (R) Windows (R) 资源编译器版本 6.1.6723.1 版权所有 (C) Microsoft Corporation。版权所有。链接... main.obj:错误LNK2019:函数“void __cdecl do_crypto_locks_setup(void)”(?do_crypto_locks_setup@@YAXXZ)中引用的未解析的外部符号_CRYPTO_set_locking_callback main.obj:错误LNK2019:函数“void __cdecl”中引用的未解析的外部符号_CRYPTO_malloc do_crypto_locks_setup(void)" (?do_crypto_locks_setup@@YAXXZ) main.obj:错误 LNK2019:未解析的外部符号 _CRYPTO_num_locks 在函数“void __cdecl do_crypto_locks_setup(void)”中引用(?do_crypto_locks_setup@@YAXXZ) main.obj:错误 LNK2019:未解析的外部函数“void __cdecl do_crypto_locks_cleanup(void)”中引用的符号 _CRYPTO_free (?do_crypto_locks_cleanup@@YAXXZ)
有没有人知道我可能需要做什么才能在 Windows 下链接这些调用?是否需要链接其他一些 .lib 文件,或者我是否需要将特定标志传递给“perl Configure VC-WIN32”命令以启用这些功能,或者???
谢谢,杰里米