起因¶
在 Github 搜 Rust 的 GUI 库,有一个 imgui-rs,绑定的 C++ 的 dear imgui。
dear imgui 的 issues 里有很多截图:

看上去很厉害,想试用一下,README 里写了跑示例只能用 msvc 工具链编译,msvc 太大了,犹豫了一下,败给了好奇心。
msvc toolchain 的安装¶
Visual C++¶
先单独安装 Visual C++,到 Visual Studio 下载页下载安装器,可以选 Visual Studio Community 2017,也可以在页面下面选 build tools,两个其实一样,只是点进去选项的位置稍有不一样。
我选的是 build tools,在一个一个试验以后,确认最小安装如图:

安装过程中提示无法下载 VC_redist.x64.exe,不知道为什么,按照提示框给的链接,单独下载这个文件,放到 C:\ProgramData\Microsoft\VisualStudio\Packages 里,点击 retry 即可。
后来编译的时候遇到过 C1083 错误,提示缺少 advapi32.lib,就是因为没装那个巨大的 Windows 10 SDK for Desktop C++。(下面三个更大。)
这个 .lib 文件在 51cto 上有人上传了剪裁过的 SDK 包,但这个网站下载需要登录,虽然提供了 OAuth 登录,却必须绑定手机号。这还不如直接要手机号。
toolchain¶
安装完 msvc 执行:
等它装完:
装好后试着编译 imgui-rs 的示例,还是失败,不知道为什么不能编译 64 位的,又改装了 stable-i686-pc-windows-msvc,终于编译成功。
附
对比一下,安装 gnu 工具链:
搞定。
测试¶
不多不说光是自带的 test_window 的例子就感觉很好很强大,里面有各种工具的实现,操作方便、响应流畅。
唯一的问题就是性能。一个 hello_world 的窗口几乎跑满了 i5 笔记本的一个核心,编译成 release 版后静止状态也要占 CPU 百分之十几,动一动鼠标就奔着翻倍去了,大概真的是每一帧都重新渲染。
看来只能用来开发游、3D 戏这种不怕吃硬件的东西。
之后我试着编译了另一个类似的 C 语言实现的绑定——nuklear-rust,Windows 下编译不成功。
结论¶
白干。