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

Visual Studio 17.3.4编译CMake项目成功但运行时提示缺失libeay32.dll问题求助

解决运行时缺失libeay32.dll的问题

你遇到的这个问题很典型——编译通过但运行时找不到DLL,本质是因为编译阶段只需要链接OpenSSL的导入库(.lib文件)来确认符号存在,而运行阶段需要实际的动态链接库(.dll文件)来提供功能实现。下面给你几个靠谱的解决办法:

  • 直接复制DLL到可执行文件目录
    这是最直接的方案:找到你OpenSSL安装目录下的openssl/install_dir/bin文件夹,里面应该有libeay32.dll和ssleay32.dll两个文件,把它们复制到你的executable_name.exe所在的输出文件夹里(比如Debug/Release目录)。这样程序运行时就能直接找到依赖的DLL了。

  • 将DLL路径添加到系统PATH环境变量
    如果不想每次都复制DLL,可以把openssl/install_dir/bin这个路径添加到系统的PATH环境变量中。添加完成后,记得重启你的Visual Studio或者终端,让新的环境变量生效。这样系统在运行程序时会自动在PATH路径里查找需要的DLL。

  • 链接OpenSSL静态库(彻底摆脱DLL依赖)
    如果你希望程序不依赖外部DLL,可以选择链接OpenSSL的静态版本。首先确认你的OpenSSL安装包包含静态库(通常文件名带有MT后缀,比如libeay32MT.lib、ssleay32MT.lib),然后修改你的CMake配置:

    set(OPENSSL_INCLUDE_DIR openssl/install_dir/include)
    # 替换为静态库路径
    set(OPENSSL_LIBRARIES openssl/install_dir/lib/libeay32MT.lib openssl/install_dir/lib/ssleay32MT.lib)
    # 添加宏定义,告诉OpenSSL我们使用静态链接
    add_definitions(-DOPENSSL_STATIC)
    include_directories(AFTER ${OPENSSL_INCLUDE_DIR})
    target_link_libraries(executable_name ${OPENSSL_LIBRARIES})
    

    重新编译后,你的可执行文件就会把OpenSSL的代码打包进去,运行时不再需要额外的DLL文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 16:17:31