# libstdc++-6.dll の依存関係エラー（STATUS_ENTRYPOINT_NOT_FOUND）と静的リンクの修正方針

## 問題の背景
テスト実行時に `STATUS_ENTRYPOINT_NOT_FOUND` エラーが発生していますが、これは実行時に読み込まれた `libstdc++-6.dll` が、ビルド時にリンクされたものと異なる（互換性のない古いバージョンなどが読み込まれている）ために発生しています。
今回のケースでは、環境変数の `PATH` の優先順位により、Git Bash などに付属している異なるビルドチェーンの `libstdc++-6.dll` が誤って先に読み込まれてしまっていることが原因です。

## 修正方針（stdc++ の静的リンク）

C++ プログラム（今回の場合 `cxx-build` でビルドされるブリッジコードや OCCT との連携）が依存する標準ライブラリ（`libstdc++` および `libgcc`）を DLL への動的リンクではなく、実行ファイルに静的リンクするよう リンカーオプション（`-static-libstdc++`, `-static-libgcc`） を Rust 側から渡す必要があります。

## 具体的な修正手順

`build.rs` を編集し、MinGW (GNUツールチェーン) でビルドする際に必要なリンカーフラグを追加します。

### `build.rs` への追記

既存の Windows 用のリンク処理を行っている箇所周辺に、静的リンクのフラグを出力する処理を 追加します。

```rust
	if env::var("CARGO_CFG_TARGET_OS").as_deref() == Ok("windows") {
		println!("cargo:rustc-link-arg=-ladvapi32");
		
		// GNU ツールチェーン (MinGW) の場合、DLL のパス不整合エラーを防ぐため
		// C/C++ 標準ライブラリを静的リンクする
		if env::var("CARGO_CFG_TARGET_ENV").as_deref() == Ok("gnu") {
			println!("cargo:rustc-link-arg=-static-libstdc++");
			println!("cargo:rustc-link-arg=-static-libgcc");
		}
	}
```

この修正により、`cargo test` や `cargo build` で生成された実行ファイル（`.exe`）は `libstdc++-6.dll` への依存を持たなくなり、どの環境から実行しても DLL の検索順序に起因するクラッシュ（`STATUS_ENTRYPOINT_NOT_FOUND`）を防止できるようになります。

### （代替手段） `.cargo/config.toml` を使用する場合

もし `build.rs` の変更を行わず、プロジェクトの設定として解決したい場合は、`.cargo/config.toml` を作成（または編集）し、以下のように記述することも可能です。（しかしながら、OCCT 自体を静的ビルドしている現在の構成を踏まえると、`build.rs` 内で解決する前者の方法がプロジェクト全体として統一感があり推奨されます。）

```toml
[target.x86_64-pc-windows-gnu]
rustflags = [
    "-C", "link-arg=-static-libstdc++",
    "-C", "link-arg=-static-libgcc"
]
```構造