Windows10编译OpenSSL 3.5.x 64位二进制文件遇链接错误求助
解决OpenSSL 3.5.4在Windows x64环境编译时的LNK1112架构冲突错误
问题根源
你在x64本机工具命令提示符中使用了VC-WIN32作为配置目标,这会让OpenSSL生成32位的汇编目标文件(比如aes-586.obj),但当前环境下的VC编译器默认输出64位的C代码目标文件,两者架构不匹配,导致链接时触发LNK1112错误。
解决方案
- 将配置命令中的目标架构参数从
VC-WIN32改为VC-WIN64A(OpenSSL针对Windows x64的官方目标参数) - 确保zlib库是用x64工具链编译的(和当前命令提示符环境一致)
- 清理旧编译残留后重新执行配置和编译
详细操作步骤
- 清理之前的编译生成文件:
nmake clean - 重新执行配置命令,替换架构参数:
perl Configure no-rc5 no-idea enable-mdc2 enable-zlib VC-WIN64A -I..\zlib /LIBPATH:..\zlib - 重新编译:
nmake
补充说明
- 切换到
VC-WIN64A后,OpenSSL会自动选择适配x64的汇编实现(包括你提到的aesni-x86_64.pl对应的代码),无需手动修改汇编参数或脚本逻辑。 - 确认zlib编译环境:如果之前的zlib是在x86命令提示符下编译的,需要重新在x64环境下编译zlib,否则后续链接zlib时仍会出现架构冲突。
内容的提问来源于stack exchange,提问作者Petr Lazecky
相关产品推荐
相关产品推荐

