Windows下服务器可执行文件依赖旧版OpenSSL DLL报错
问题分析与解决办法
你的程序运行时寻找OpenSSL 1.1版本的动态库(libcrypto-1_1-x64.dll、libssl-1_1-x64.dll),但你当前安装的是OpenSSL 3.0,这说明编译阶段依赖的是OpenSSL 1.1的版本,和后续安装的3.0版本不匹配,并非安装操作有误。
以下是具体解决办法:
- 检查编译配置:查看编译时的CMake参数或IDE项目设置,确认是否指定了OpenSSL 1.1的路径。如果编译时默认链接了1.1版本的库,运行时自然会寻找对应dll。
- 安装OpenSSL 1.1.x版本:下载64位的OpenSSL 1.1.x安装包完成安装,将其bin目录(例如
C:\Program Files\OpenSSL-Win64\bin)添加到系统PATH环境变量,让程序能找到所需dll。 - 复制dll到程序目录:若不想安装旧版本,找到OpenSSL 1.1.x的
libcrypto-1_1-x64.dll和libssl-1_1-x64.dll,直接复制到authserver.exe、worldserver.exe所在的文件夹,程序会优先加载本地的动态库。 - 适配OpenSSL 3.0重新编译:如果要继续使用OpenSSL 3.0,需要修改项目代码适配3.0的API变化(部分1.1的接口在3.0中已被废弃或修改),然后重新配置CMake链接3.0版本的库,再完整编译项目。
内容的提问来源于stack exchange,提问作者TheVots
相关产品推荐
相关产品推荐

