You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译TrinityCore遇LNK2019错误:未解析OSSL_PROVIDER_set_default_search_path

TrinityCore编译LNK2019错误(OSSL_PROVIDER_set_default_search_path未解析)排查方案

错误信息

Error LNK2019 unresolved external symbol OSSL_PROVIDER_set_default_search_path referenced in function "void __cdecl OpenSSLCrypto::threadsCleanup(void)" (?threadsCleanup@OpenSSLCrypto@@YAXXZ) authserver C:\Build\src\server\authserver\common.lib(OpenSSLCrypto.obj) 1

以下是针对该问题的具体排查步骤:

  • 确认OpenSSL版本兼容性
    OSSL_PROVIDER_set_default_search_path是OpenSSL 3.0及以上版本新增的API,若使用1.1.x或更早版本,必然会出现符号未解析问题。打开命令行执行openssl version,确认主版本号≥3.0,若版本过低,卸载后重新安装OpenSSL 3.x的Win64发行版。

  • 匹配Debug/Release模式的库文件
    OpenSSL的Debug与Release版本库文件不同:Debug版为libcryptod.lib、libssld.lib,Release版为libcrypto.lib、libssl.lib。若当前项目编译模式(如Debug)误用了Release库,会导致符号不匹配。进入项目属性→链接器→输入→附加依赖项,根据当前编译模式切换对应库文件。

  • 检查库目录的完整性
    确认C:\Program Files\OpenSSL-Win64\lib下存在对应模式的库文件,部分OpenSSL版本会将Debug库放在lib/VC/static等子目录中,需将该子目录也添加至附加库目录。

  • 设置正确的预处理器定义
    在项目属性→C/C++→预处理器→预处理器定义中添加OPENSSL_API_COMPAT=0x30000000L,确保编译器能正确识别OpenSSL 3.x的API,避免因API声明版本不匹配导致链接失败。

  • 同步common项目的OpenSSL配置
    错误提示中是common.lib中的对象文件引用了该符号,需检查common项目的附加包含目录、库目录、依赖库配置是否与authserver一致,避免common项目使用旧版OpenSSL编译导致符号不兼容。

  • 验证库文件中的符号存在性
    打开VS开发者命令提示符,执行以下命令检查libcrypto.lib是否包含目标符号:

    dumpbin /symbols "C:\Program Files\OpenSSL-Win64\lib\libcrypto.lib" | findstr OSSL_PROVIDER_set_default_search_path
    

    若输出为空,说明当前libcrypto.lib确实不包含该符号,需重新下载完整的OpenSSL 3.x版本库。

内容的提问来源于stack exchange,提问作者MHogge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 08:00:09