LoginSignup
3
0

Tauriをするならmsvc版のRust toolchainを使う

Posted at

要約

Windows で、Tauri の動作環境はmsvc版のRust toolchainでなければなりません。GNU版だと動作しません。

エラー環境

Windows 11 (v10.0.22621)

Tauriプロジェクトのpackage.json
{

...
  
  "scripts": {
    "dev": "vite",
    "build": "tsc && vite build",
    "preview": "vite preview",
    "tauri": "tauri"
  },
  "dependencies": {
    "@tauri-apps/api": "^1.5.3",
    "react": "^18.2.0",
    "react-dom": "^18.2.0"
  },
  "devDependencies": {
    "@tauri-apps/cli": "^1.5.9",
    "@types/node": "^18.7.10",
    "@types/react": "^18.0.15",
    "@types/react-dom": "^18.0.6",
    "@vitejs/plugin-react": "^3.0.0",
    "typescript": "^4.9.5",
    "vite": "^4.2.1"
  }
}
$ winget list | find "Rust"
Rust 1.75 (GNU 64-bit)    Rustlang.Rust.GNU    1.75.0.0    winget

$ npm --version
10.2.5

$ yarn --version
1.22.19

問題発生

Tauri はRust+JavaScriptで、デスクトップアプリケーションを作るためのプラットフォームです。Rust toolchainとしてstable-x86_64-pc-windows-gnu を使用すると、yarn tauri devにてエラーが起きます。

エラー内容
$ yarn tauri dev

<省略>

Copy from "...\\webview2-com-sys-0.19.0\\x86\\WebView2LoaderStatic.lib" -> "...\\out\\x86\\WebView2LoaderStatic.lib"
  Error: Io(Error { kind: NotFound, message: "program not found" })

warning: build failed, waiting for other jobs to finish...

<省略>

解決

msvc版のtoolchainを使いましょう。直接入れる方法もありますが、rustupを入れてしまうのが楽です。(デフォルトでmsvc版を使うことができるようです)

$ winget remove Rustlang.Rust.GNU
見つかりました Rust (GNU) [Rustlang.Rust.GNU]
パッケージのアンインストールを開始しています...
正常にアンインストールされました

$ winget install  Rustlang.Rustup
見つかりました Rustup: the Rust toolchain installer [Rustlang.Rustup] バージョン 1.26.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://static.rust-lang.org/rustup/archive/1.26.0/x86_64-pc-windows-msvc/rustup-init.exe
  ██████████████████████████████  8.19 MB / 8.19 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

$ rustup --version
rustup 1.26.0 (5af9b9484 2023-04-05)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.75.0 (82e1608df 2023-12-21)`

$ rustup toolchain list
stable-x86_64-pc-windows-msvc (default)

原因 (推測)

Tauri内部で使用しているWebView2が、MSVC バイナリ(.dll)として提供されることに起因するものであると推測されます。(すみません、詳しく調べていません)

余談

rustup 上の GNU版を用いるとまた違うエラーが出ます。

エラー内容
$ rustup --version
rustup 1.26.0 (5af9b9484 2023-04-05)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.75.0 (82e1608df 2023-12-21)`

$ rustup toolchain list
stable-x86_64-pc-windows-gnu (default)
stable-x86_64-pc-windows-msvc

$ yarn tauri dev

...

Caused by:
  process didn't exit successfully: `...\build-script-build` (exit code: 101)
  --- stdout
  cargo:rerun-if-env-changed=TAURI_CONFIG
  cargo:rerun-if-changed=tauri.conf.json
  cargo:rustc-cfg=desktop
  cargo:rustc-cfg=dev
  package.metadata does not exist

  --- stderr
  thread 'main' panicked at ...\src\windows_not_msvc.rs:49:23:
  Couldn't to execute windres to compile "...\out\resource.rc" into "...\out/libresource.a": program not found
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

...

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0