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

已添加OpenSSL库仍无法解决_AES_encrypt未解析外部符号问题

解决VS2012中OpenSSL _AES_encrypt 未定义引用问题

我来帮你排查这个链接错误的问题——_AES_encrypt的未定义引用通常是因为链接器没找到对应的OpenSSL库文件,你已经做了基础的路径配置,但可能漏了几个关键步骤:

  • 确认平台与库文件的位数匹配:VS2012项目的平台(x86/x64)必须和你下载的OpenSSL预编译库完全一致。如果你的项目是32位(Win32),就把附加库目录指向OpenSSL包中的lib/Win32文件夹;如果是64位,就指向lib/x64,别搞混了路径。

  • 显式添加库依赖项:OpenSSL 1.1.x版本中,AES加密相关的函数都在libcrypto系列库中。你需要在项目的「链接器>输入>附加依赖项」里手动添加对应的库文件名:

    • 静态链接:添加 libcrypto.lib
    • 动态链接:32位项目加libcrypto-1_1.lib,64位项目加libcrypto-1_1-x64.lib
      另外,如果选择静态链接,记得在代码的最开头添加宏定义:#define OPENSSL_STATIC,避免链接到动态库的符号。
  • 验证头文件的正确性:右键点击代码里的<openssl/aes.h>引用,选择「转到定义」,确认跳转到你下载的1.1.0版本的aes.h文件,而不是系统中其他版本的OpenSSL头文件,避免版本不匹配导致的符号问题。

  • 清理并重新生成项目:VS的缓存有时候会导致新的路径配置不生效,先执行「生成>清理解决方案」,再重新生成整个项目,确保链接器使用最新的配置。

额外提醒:OpenSSL 1.1.x和1.0.x版本的API、库结构差异很大,AES_encrypt在1.1.x中是存在的,但一定要确保你链接的是对应版本的库,不要和旧版本的OpenSSL库文件混在项目路径里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:18:09