`cargo build`失败,链接错误" link.exe失败:退出代码:325595"

时间:2018-05-14 18:49:46

标签: windows linker rust

我有一个可以在Linux,macOS和Windows 10上编译好的Rust项目。

我今天在Windows 7计算机上使用Visual Studio Installer

安装了以下各个组件
  • VC++ 2015.3 v14.00 (v140) toolset for desktop
    • Windows Universal CRT SDK(依赖)
    • Windows 8.1 SDK(依赖)

之后,我使用official website中的新rustup-init.exe安装了Rust。

当我在Windows 7计算机上的Rust项目上运行cargo build时,它失败并显示以下消息:

error: linking with `C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\link.exe\` failed: exit code: 325595.

在我的Windows 10计算机上运行C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\link.exe并且没有任何参数,会产生一些" help"信息,但在我的Windows 7计算机上,我得到一个窗口,其中包含错误消息:

The application was unable to start correctly (0xc000007b).  Click Ok to close the application.

我的Google-Fu还没有提供任何有用的信息。我试过了:

  • sfc /scannow
  • 确保System32没有32位DLL
  • 确保SysWOW64没有64位DLL

2 个答案:

答案 0 :(得分:2)

下载最新的64位运行时Visual C++ Redistributable for Visual Studio 2017后,link.exe可在我的Windows 7计算机上运行。我现在可以编译我的Rust项目了。

我很惊讶Visual Studio Installer并不确保为2015工具集安装必要的运行时组件。

更新: Stargateur指出可以直接从Visual Studio Installer安装Redistributable。 它是Visual C++ 2017 Redistributable Update个人组件。

答案 1 :(得分:1)

更改默认链接器可以解决此问题。我的系统是 64 位的,但链接器指向的是 32 位的。

这个在锈book中也提到了

 rustup default stable-x86_64-pc-windows-gnu

阅读 this 以了解有关发生这种情况的原因的更多解释。

默认情况下,配置选择了 32 位,因此运行上面给出的命令会将链接器切换为 64 位。