windows OpenSSL致命错误LNK1112:模块计算机类型'x86'与目标计算机类型'x64'冲突

vecaoik1  于 2023-03-19  发布在  Windows
关注(0)|答案(3)|浏览(613)

我在尝试在Windows 10上构建OpenSSL时遇到了一个非常令人沮丧的错误。

"lib" /nologo /out:providers\libdefault_static.lib @C:\Users\jcava\AppData\Local\Temp\nmF1AF.tmp
providers\common\libdefault-lib-bio_prov.obj : fatal error LNK1112: module machine type 'x86' conflicts with target machine type 'x64

我正在做的步骤是在我从Github克隆的openssl目录中运行perl Configure VC-WIN64A,然后运行nmake。我在VS 2019的x64命令行提示符中运行所有这些操作。
干杯,詹姆斯

7fhtutme

7fhtutme1#

对于x64,您必须从x64 VS 201x本机工具命令提示符运行perl Configurenmake命令,而不是从VS 201x开发人员命令提示符运行。
您可以在Windows搜索栏中搜索它。请确保右键单击它并在管理员模式下运行它。
如果你已经编译错了,你可能需要删除openssl并重新克隆它,删除.obj文件并没有解决我的问题。
Source

mqkwyuun

mqkwyuun2#

我也遇到过类似的问题。这意味着有一些目标文件已经用x86编译过了(在这个例子中)。也许你一开始就用x86编译器。
如果你删除了所有的目标文件(在openssl目录下输入del /S *.obj),然后再次运行nmake,它应该编译得很好。
或者,您可以重新克隆存储库并重新开始。

shstlldc

shstlldc3#

我在使用Visual Studio Community 2022时遇到了同样的错误。可能是我瞎了眼,但我在任何地方都找不到 *x64本机工具命令提示符 *。
对于来到这里并正在使用VSC2022的任何人:在构建OpenSSL v3.1.0之前,您可以使用 * 开发人员命令提示符 * 并运行C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat。当然,您的 vcvars64.bat 可能安装在其他位置。
是的,正如其他人建议的那样,我不得不从以前失败的构建中删除文件。我只是使用了nmake clean
如果您构建的是32位版本,则有一个等效的 vcvars32.bat 脚本。

相关问题