事情是这样的,最近出于洁癖,我把 Rust 切换到「GNU 工具链」,但不知道是什么原因,某次开机之后 VS Code 无法运行 rust-analyzer 了。我思考了一段时间,认为是 VS Code 中安装的 rust-analyzer 与 GNU 工具链 Rust 不兼容(事实并非如此,属于是歪打正着,见 2023/1/19 更正)。于是,我使用 GNU 工具链编译了一个 rust-analyzer,配置 VS Code 来手动定位到我自己编译的 rust-analyzer,最终问题解决了。

下面,我就介绍一下我是这么解决问题的。首先,编译 rust-analyzer,执行下面这条指令:

rustup component add rust-analyzer

一般来说,编译完成之后,可以「~/.rustup/toolchains/*/bin」目录下找到 rust-analyzer。例如,我的 rust-analyzer 路径是「~/.rustup/toolchains/stable-x86_64-pc-windows-gnu/bin/rust-analyzer」目录下。

接下来,在 VS Code 中安装 rust-analyzer 插件。打开「settings.json」,在其中添加「rust-analyzer.server.path」属性,指向我们刚才编译的 rust-analyzer,如下(更多的配置内容可以参考官方的 用户手册 - 20230506 ):

{ "rust-analyzer.server.path": "~/.rustup/toolchains/stable-x86_64-pc-windows-gnu/bin/rust-analyzer" }

配置完成之后,我在 VS Code 中顺利运行了 rust-analyzer。

2023/1/19 更正:意外发现,还有其他程序也报错了,显式错误代码「0xc00007b」。在排查程序依赖项时发现,系统不存在 「vcruntime140.dll」。我的天哪!这个「vcruntime140.dll」莫名其妙丢失了!这让我很无语。系统重装后,可能未(正确)安装Visual C++ 可再发行程序包。于是,我修复了一下「Visual C++ 可再发行程序包」,这些程序「奇迹般的」又可以正常运行了,包括 VS Code 自带的 rust-analyzer。这说明只是运行时出现了问题,再次感到无语。

最后,推荐使用 lucasg/Dependencies 来查看程序依赖项,它比 Dependency Walker 好用太多。

最后修改:2024 年 12 月 08 日
如果觉得我的文章对你有用,请随意赞赏