已添加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
相关产品推荐
相关产品推荐

