しらいとブログ

ネットで検索してもなかなか出てこないIT情報を独自にまとめています

Rust言語でDxLibを使う

DxLibはWindows用のゲームなんかを作れるライブラリです。DxLibはC++のライブラリですが、C#用のDLLバージョンも公開されており、C#以外でもFFI(Foreign function interface)が使える言語なら使えます。RustもFFIが使える言語なのでDLL版DxLibを使うことが出来ます。

ただし、DLL版はいくつかの関数が使えません。例えばprintfDxDrawFormatStringのような可変長引数を使った関数は呼び出し規約がstdcallなため使えません。ですが、普通にゲームを作るだけならあまり困ることは無いと思います。ちなみにstdcall以外を使うよう自分でDLLを作ればこのような制限はありません。

この記事ではRustでDxLibの関数を呼び出し、ウィンドウを出すところまで解説します。

続きを読む

WindowsでRustプログラミング(環境構築)

WindowsでRustプログラミングをやるならEclipse + RustDTがオススメです。Eclipse統合開発環境IDE)の名前です。RustDTはEclipseプラグインで、Rust Development Toolingの略です。この2つを使えば、関数名の自動補完や、ブレークポイントを使ったデバッグが出来ます。ただし色分けが微妙だったりもします。(i32などの型に色が付きません。)

この記事ではEclipseとRustDTの導入方法を解説します。ついでに、デバッグビルド、ブレークポイントデバッグ、リリースビルドのやり方まで紹介しています。

続きを読む

「exit code -1073741515」=DLLが見つからない

Windowsプログラミングにおいて、開発環境では問題なく動くプログラムが本番環境で動かない時によくあるのが「exit code -1073741515」です。あるいは16進数の「exit code FFFFFFFFC0000135」だったり、16進数で16bitの「exit code C0000135」だったりします。

これはタイトルの通りDLLが見つからない時のエラーです。見つからないのは大抵コンパイラに付属しているDLLです。開発環境ではコンパイラにパスを通すことが多いため、DLLを用意しなくてもコンパイラのパスからDLLを見つけます。そのため、本番環境で実行して初めて、必要なDLLがあることに気付くのです。当然ですが、このエラーは必要なDLLを一緒に配布すれば解決します。

筆者もC言語C++言語を使う時は気を付けていたのですが、Rust言語でもGCCのDLLが必要だったとは知らずやらかしてしまいました。

ちなみにGCCは-staticを指定すればDLLが不要になります。