DLLファイルとは何か、中身はどうなっているのか〜作り方・使い方まで実際に確かめた〜
DLLファイルとは何か、中身はどうなっているのかを実際に作って確かめた記録。DLLの中身は外から呼べる関数の名簿で、C・C++・Rust・C#で作って両OSで覗きました。C++とRustの同居も可能ですが、公開する関数を明示しないときの壊れ方はOSで正反対です。作り方4通り・使い方3通り・DLLが無いときのエラー処理まで
プログラミングや3DCGで何か作りたいと思っているエンジニアがいます
DLLファイルとは何か、中身はどうなっているのかを実際に作って確かめた記録。DLLの中身は外から呼べる関数の名簿で、C・C++・Rust・C#で作って両OSで覗きました。C++とRustの同居も可能ですが、公開する関数を明示しないときの壊れ方はOSで正反対です。作り方4通り・使い方3通り・DLLが無いときのエラー処理まで
FlutterからネイティブへC++で架けた橋を、そのままRustで架け替えて比べました。生のC ABIならRust 0.0089µs・C++ 0.0091µsで一致し、橋の材質は速度に関係ないと分かります。一方 flutter_rust_bridge は既定で1,442倍。さらにWindowsでは「渡った先が支配的」という前提が崩れ、Smart App Controlに阻まれてビルドすらできませんでした。
組み込み開発でRustはどこまで実用になったのかを、①書けるか ②安全認証を通せるか ③現場が乗り換えるか の3層に分けて整理しました。Cortex-M3向けに「素のベアメタル」「cortex-m-rt」「Embassy」の3つの書き方で同じプログラムを作り、QEMUで動かして実測。短く書けるほど焼かれるサイズが大きくなる関係や、Ferroceneの認証、AUTOSAR互換RTOSが無い問題まで、目的別の判断表にまとめています。
組み込み系エンジニアがRustに入門!AndroidカーネルやWindowsへの採用で注目のRustを、C言語使いの目線で解説。所有権・借用・ライフタイムの概念からC言語との文法比較まで。