WindowsのMinGWでdxlib(DXライブラリ)を使う手順を紹介する

WindowsのMinGWでdxlib(DXライブラリ)が使えるようにしたので、その手順を紹介していきます。

また、今回の手順は公式ドキュメント「DXライブラリ置き場 使い方説明」を参考にしています。

開発環境

  • WIndows 10 (2019/ 05/ 15時点)
  • MinGW Thread model: win32 gcc version 8.2.0 (MinGW.org GCC-8.2.0-3)
  • dxlib 8_1_0_i686_w64_posix_dwarf_rt_v6_rev0

開発環境で重要なのは、MinGWを32bit版にすること、そして、dxlibのgccのバージョンとMinGWのgccのバージョンを極力合わせること

僕も最初は64bit版のMinGWを使っていたせいで上手くできなかったが、32bit版のMinGWをインストールし直すことでdxlibが動くようになりました。

MinGW – Minimalist GNU for Windows プロジェクト日本語トップページ – OSDN

dxlibが使えるようにするまでの手順

1,dxlibをダウンロードする

まずは、以下のURLに行って「DXライブラリ Windows版 Gnu C++( MinGW )用」をダウンロードします。

リンク先:DXライブラリ置き場 ダウンロードページ

ダウンロードしたzipファイルを解凍したフォルダの中に「プロジェクトに追加すべきファイル_GCC(MinGW)用」と言うフォルダが入っているので、クリックします。

f:id:toumasuxp:20190515204154j:plain

上画像のようにgccのバージョン毎にフォルダが分けられているので、自分のgcc(MinGW)のバージョンに合ったものをクリックします。

ちなみに、すでにMinGWを入れている場合は、コマンドプロンプト(黒い画面のやつ)でgcc -vとしたら、バージョンが出てきます。

f:id:toumasuxp:20190515204504j:plain

ボクの場合は「gcc version 8.2.0 (MinGW.org GCC-8.2.0-3)」と書かれていたので、バージョンが最も近い「8_1_0_i686_w64_posix_dwarf_rt_v6_rev0」を使うようにしました。

2, MinGWのincludeフォルダにdxlibのフォルダを入れる

次に、MinGWのフォルダを探して開いてみましょう。
MinGWを何も考えずにインストールした場合は、C:\MinGWにあると思います。

f:id:toumasuxp:20190515204940j:plain

このフォルダの中にincludeフォルダがあると思うので、そのincludeフォルダをクリック。そして、以下の画像の様にDxLibフォルダを新しく作っておきましょう。(DxLibフォルダを作るのは必須ではないですが、管理しやすいようにフォルダを作った方が良いです。)

f:id:toumasuxp:20190515205323j:plain

フォルダを作るのは、「右クリック」→新規作成→フォルダでできます。

そして、dxlibのフォルダを開いて、たくさんあるファイルの内、「C Header ソースファイル」と書かれたファイルを全て選択&コピーをして、それを先ほど作ったDxLibフォルダ(C:\MinGW\include\DxLib)に入れます。

f:id:toumasuxp:20190515205551j:plain

includeフォルダは、最終的には以下の様になっていると思います。

f:id:toumasuxp:20190515205822j:plain

MinGWにdxlibのオブジェクトファイルを入れる

では、今度はC:\MinGWフォルダに戻って、libフォルダをクリックしましょう。そして、先ほどと同じようにDxLibフォルダを作成します。

そしてdxlibの8_1_0_i686_w64_posix_dwarf_rt_v6_rev0フォルダに戻って、今度はC Headerソースファイルではなく、「A ファイル」と書かれたものをすべてコピーして、C:\MinGW\lib\DxLibに入れましょう。

最終的には、以下の様なファイル構成になっていると思います。

f:id:toumasuxp:20190515210206j:plain

3,実際にdxlibを動かしてみる

では、dxlibが使えるか確認するために、サンプルコードを動かしてみましょう。

今回は、test.cppを用意して以下の様に書いてください。(C言語の人はtest.cにしてください)

#include "DxLib\DxLib.h"
// プログラムは WinMain から始まります
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
if( DxLib_Init() == -1 )     // DXライブラリ初期化処理
{
return -1 ;          // エラーが起きたら直ちに終了
}
DrawPixel( 320 , 240 , GetColor( 255,255,255 ) ) ; // 点を打つ
WaitKey() ;             // キー入力待ち
DxLib_End() ;               // DXライブラリ使用の終了処理
return 0 ;               // ソフトの終了 
}

上記は、画面が出てきて、何かしらのボタンを押すと画面が閉じるというコードです。

上記のコードを完成させたら、以下の様にコンパイルします。(C言語の人はg++の所をgccに変えてください)

g++ -m32 -o test test.cpp -LC:\MinGW\lib\DxLib -DDX_GCC_COMPILE -DDX_NON_INLINE_ASM -lDxLib \
-lDxUseCLib \
-lDxDrawFunc \
-ljpeg \
-lpng \
-lzlib \
-ltiff \
-ltheora_static \
-lvorbis_static \
-lvorbisfile_static \
-logg_static \
-lbulletdynamics \
-lbulletcollision \
-lbulletmath \
-lopusfile \
-lopus \
-lsilk_common \
-lcelt \

上手く行くとtest.exeと言うファイルが作成されるので、./testで実行してみましょう。
これで上手くいくはず。

ReratedPosts

なぜ子プロセスを呼び出した時にsetsid()を使うのか?
segmentation fault 11(core dumped)の原因と2つのチェックポイント
C言語のsizeofにおける配列、ポインタ、構造体などの動きのまとめ
C言語の安全な文字列コピーは、strcpyよりもstrncpy、そしてstrlcpyが良い
C言語のコンパイルにおけるアセンブラ→実行ファイルまでの流れをまとめてみた
C言語のvoidの使い方について