DXライブラリ(DxLib)は、山田巧氏が2001年から公開している無料のC++向けゲーム開発ライブラリです。DirectXの初期化やデバイス管理を関数の内側に隠しているので、DxLib_Initを呼ぶだけで画像・音・キー入力が使えるようになります。2026年10月時点の最新版はVer3.25a(2026年8月23日公開)で、公式サイトにはVisual Studio Community 2026向けの設定手順も追加されました。この記事では、最新版の中身、Visual Studio 2026での設定、最初のゲームループ、作ったゲームを配るときの著作権表記、Siv3D・raylibとの選び分けまでを順に説明します。「dxlib」「dxliv」「DX Library」と表記が揺れていても、指しているのはこのライブラリです。
まとめ:DXライブラリの最新版と導入・使い方の要点
- DXライブラリは、DirectXを関数呼び出しだけで扱えるようにした無料のC++ライブラリ。2D中心で、3DモデルやMMD形式も読める。
- 最新はVer3.25a(2026-08-23)。Visual Studio用パッケージは約206MBで、MinGW・C++Builder 12・Visual C#・Android・iOS版も同じ版で配布されている。
- Visual Studio 2026では「マルチバイト文字セット」「インクルード/ライブラリディレクトリ」「ランタイム/MT・/MTd」の設定が要る。libファイルはヘッダーがビルド構成に合わせて自動で選ぶ。
- 使用料は商用・法人でも0円。ただし配布物の説明書などに、内部で使っているlibjpeg・libpng・zlib等の著作権表記を載せる。
- C++の基礎を手を動かして覚えたいならDXライブラリ、macOSやブラウザにも出したいならSiv3Dかraylib、3Dや大型タイトルならUnityかGodotを選ぶ。
DXライブラリの特徴と作れるゲーム
DirectXを隠すC++の関数群
Windowsで画面に絵を出すには、本来DirectXのデバイス作成やスワップチェーンの設定を何十行も書く必要があります。DXライブラリはその部分をすべて引き受け、利用者はDxLib_Initで初期化し、DrawGraphで描き、DxLib_Endで終えるだけで済みます。この記事で使うWindows版Visual Studio(C++)用は静的ライブラリ(.lib)をリンクするため、完成したゲームの実行ファイルにDXライブラリ用のDLLを添える必要はありません。公式サイトの開設は2001年5月1日で、25年にわたり同じ作者が更新を続けています。
2D描画と3D・MMDモデルの対応範囲
得意なのはシューティング、アクション、ノベル、パズルといった2Dゲームです。公式の仕様ページによると、画像はBMP・JPEG・PNG・TGA・DDS・TIFF、音声はWAV・MP3(Windows版のみ)・Ogg Vorbis・Opus、動画はOgg Theoraを扱えます。3Dモデルはx・mqo・pmd/pmx(MikuMikuDance形式)と独自のmv1形式を読み込めます。ただし、公式仕様ではpmxはpmd相当の機能のみを使ったファイルへの仮対応です。これらの対応範囲内で、MMDのモデルを動かす小規模な3D作品も作れます。一方、GUIの部品(ボタンやテキストボックス)は持たないので、業務アプリには向きません。
最新版Ver3.25aと対応環境
更新履歴と3.25の変更点
公式の更新履歴では、3.25と3.25aがともに2026年8月23日の公開で、3.25aは「正式公開のためにバージョン番号を変更」したものです。中身の変更は3.25にまとまっています。
- 画像の一部を3D空間に描く
DrawRectBillboard3Dを追加 - グラフィックスデバイスがロストすると以後まったく描画されなくなる不具合を修正
- セキュリティソフトにマルウェアと誤判定されやすくなるため、
SetSysCommandOffFlagの機能を既定で停止
その前の正式版は3.24f(2025年3月21日)なので、約1年5か月ぶりの更新です。解説記事の版番号は公開・更新時点によって異なるため、現在の版番号は公式の更新履歴で確かめてください。
コンパイラ別のパッケージとサイズ
公式ダウンロードページでは、使うコンパイラごとに別のzipが用意されています。初めてなら、解説が最も多いVisual Studio(C++)用を選んでください。
| パッケージ | 版 | サイズ(zip) |
|---|---|---|
| Windows版 Visual Studio(C++)用 | 3.25a | 約206MB |
| Windows版 Gnu C++(MinGW)用 | 3.25a | 約165MB |
| Windows版 C++Builder 12用 | 3.25a | 約52.3MB |
| Windows版 Borland C++ Compiler 5.5用 | 3.25a | 約33.1MB |
| Android版 | 3.25a | 約75.1MB |
| iOS版 | 3.25a | 約78.2MB |
| Visual C#用 | 3.25a | 記載なし |
このほか、ソフトウェアレンダリング機能や3Dモデル機能を外した軽量版と、ライブラリ自体を改造するためのプロジェクト一式も配布されています。Windows版の動作環境はWindows XP以降・DirectX 9以降で、Android版はAndroid 2.3以降(OpenGL ES 2.0)、iOS版はiOS 7.0以降が対象です。
Windows以外の対応状況(家庭用ゲーム機・HTML5・Linux)
公式トップではNintendo Switch 2・Nintendo Switch・PlayStation 4・PlayStation Vitaへの対応が告知されています。ただしSwitch 2版の案内にあるとおり、使えるのは任天堂からソフト開発の許諾を得ている場合に限られ、一般のダウンロードページには置かれていません。ブラウザ向けのHTML5版は公式配布ではなく、有志の非公式プロジェクトDxLibForHTML5(emscriptenでビルド)があります。Linux版も第三者が作ったもので、公式ページからGitHubへリンクされているだけです。macOSのネイティブ版は公式の配布一覧にありません。
DXライブラリ置き場で探す場所(ダウンロード・リファレンス・講座)
公式サイトの名前は「DXライブラリ置き場」です。ページが多いので、目的別に入口を押さえておくと迷いません。
- ダウンロード:DXライブラリのダウンロード。最新版のzipはすべてここにある。
- 関数の引数と戻り値:関数リファレンスマニュアル。関数ごとにサンプルプログラムが付いている。
- Visual Studioの版ごとの設定:DXライブラリの使い方。Community 2026・2022・2019などの手順が並ぶ。
- ゲームの作り方を通しで学ぶ:ゲームプログラム開発講座とサンプルゲームのダウンロード。
- 版ごとの変更点:更新履歴と、脆弱性情報のページ。
なお、リファレンスに載っていない関数も多く、全関数の一覧はパッケージ内のヘッダーファイルDxLib.hにあります。各関数の宣言の横に日本語の説明コメントが付いているので、リファレンスで見つからないときはヘッダーを検索してください。
Visual Studio 2026でのDXライブラリ導入設定
Visual StudioのインストールとC++プロジェクト作成
Visual Studio Community 2026は個人開発では無償で利用できますが、組織利用には条件があります。利用条件を確認してインストールし、ワークロードで「C++ によるデスクトップ開発」にチェックを入れます。2026版の新機能やシステム要件はVisual Studio 2026の新機能|VS2022との違い・サポート期限とVS2027への更新【2026年10月】にまとめています。DXライブラリのzipは解凍し、中の「プロジェクトに追加すべきファイル_VC用」フォルダの中身をC:\DxLibへコピーし、直下にDxLib.hとlibファイルがある状態にします。マイドキュメントのような深い場所に置くと、パス指定が長くなり打ち間違えが増えます。
プロジェクトは「新しいプロジェクトの作成」で「Windows デスクトップ ウィザード」を選び、アプリケーションの種類を「デスクトップ アプリケーション (.exe)」、追加オプションを「空のプロジェクト」にします。ソースファイル(.cpp)を追加したら、「名前を付けて保存」の「エンコード付きで保存」で「Unicode (UTF-8 署名付き)」を選び直します。公式のVS2026手順はこの保存形式を指定しています。
プロジェクトのプロパティで設定する5項目
プロパティを開き、最初に「構成」を「すべての構成」、「プラットフォーム」を「すべてのプラットフォーム」へ切り替えてから設定します。ここを忘れるとDebugだけ、x64だけに設定が入り、構成を変えた途端にビルドが通らなくなります。
| 設定箇所 | 値 | 対象の構成 |
|---|---|---|
| 構成プロパティ → 詳細 → 文字セット | マルチ バイト文字セットを使用する | すべて |
| C/C++ → 全般 → 追加のインクルード ディレクトリ | C:\DxLib | すべて |
| リンカー → 全般 → 追加のライブラリ ディレクトリ | C:\DxLib | すべて |
| C/C++ → コード生成 → ランタイム ライブラリ | マルチスレッド (/MT) | Release |
| C/C++ → コード生成 → ランタイム ライブラリ | マルチスレッド デバッグ (/MTd) | Debug |
ランタイムを/MTにすると、C++の標準ランタイムが実行ファイルへ組み込まれます。配布先のPCにVisual C++再頒布可能パッケージが入っていなくても起動するので、友人やイベントで配る小さなゲームにはこの設定が向いています。
libファイルが自動で選ばれる仕組みとリンクエラーの読み方
Ver3.25aのVisual Studio用パッケージを展開すると、libファイルが418個入っています。リンカーの「追加の依存ファイル」に1つずつ書く必要はありません。DxLib.hから読み込まれるDxDataTypeWin.hが、コンパイラの版(_MSC_VER)、ランタイムの種類(_DLL)、64ビットかどうか(_WIN64)、Debugかどうか(_DEBUG)、文字セット(UNICODE)の5条件を見て、#pragma comment(lib, ...)で使うlibを自動で指定するからです。
VS2015以降・x64・Debug・/MTd・マルチバイト → DxLib_vs2015_x64_MTd.lib
VS2015以降・x64・Release・/MT・マルチバイト → DxLib_vs2015_x64_MT.lib
VS2015以降・x64・Release・/MD・マルチバイト → DxLib_vs2015_x64_MD.lib
VS2015以降・x64・Release・/MT・Unicode → DxLibW_vs2015_x64_MT.lib
この仕組みがわかると、エラーの原因を絞り込めます。
- 「LNK1104: ファイル ‘DxLib_vs2015_x64_MTd.lib’ を開くことができません」:ヘッダーは見つかったがlibの場所が伝わっていない。リンカーの「追加のライブラリ ディレクトリ」と、そこを「すべての構成」で設定したかを確認する。
- 「DxLib.h が開けません」(C1083):インクルード ディレクトリの設定漏れ。zipを解凍せずに参照している場合もこれになる。
- 文字列を渡す行で「const char から const TCHAR へ変換できません」(C2664):文字セットがUnicodeのまま。
DrawStringなどはTCHARで宣言されているため、マルチバイトに戻すか、文字列をL"..."で書く。
なお、VS2015以降向けには/MD用のlibも同梱されており、ヘッダーが_DLLを見て切り替えます。既定の/MDのままでもリンクは通りますが、配布先にランタイムが要るので、公式手順どおり/MTにそろえておくのが安全です。
最初のプログラムとゲームループ
ウィンドウを開く最小のコード
次のコードは、ウィンドウを開いて文字を表示し、キーが押されたら終わる最小構成です。DXライブラリは既定で起動時のカレントディレクトリにLog.txtを書き出すので、不要なら初期化の前に止めておきます。画面の大きさは何も指定しなければ640×480です。
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
SetOutApplicationLogValidFlag(FALSE); // Log.txtを作らない
ChangeWindowMode(TRUE); // ウィンドウモードで起動
if (DxLib_Init() == -1) return -1; // 初期化に失敗したら終了
DrawString(0, 0, "Hello, DxLib", GetColor(255, 255, 255));
WaitKey(); // キー入力を待つ
DxLib_End(); // 必ず終了処理を呼ぶ
return 0;
}
エントリーポイントはmainではなくWinMainです。「デスクトップ アプリケーション (.exe)」で作ったプロジェクトならこのまま実行でき、実行ファイルはx64\Debugまたはx64\Releaseフォルダにできます。
画像・音・キー入力で使う関数
ゲームに必要な処理の大半は、次の関数の組み合わせで書けます。読み込み系の関数は「ハンドル」と呼ぶ整数を返し、描画や再生ではそのハンドルを渡します。
| 用途 | 関数 | 使い方の要点 |
|---|---|---|
| 画像の読み込み | LoadGraph | 起動時に1回だけ呼ぶ |
| 画像の描画 | DrawGraph / DrawRotaGraph | 後者は拡大率と角度を指定 |
| 音の読み込み | LoadSoundMem | WAV・MP3・OGGなど |
| 音の再生 | PlaySoundMem | BGMはDX_PLAYTYPE_LOOP、効果音はDX_PLAYTYPE_BACK |
| キー1つの判定 | CheckHitKey | 押されていれば1 |
| 全キーの判定 | GetHitKeyStateAll | char型256個の配列に一括取得 |
| ゲームパッド | GetJoypadInputState | ボタンをビットで返す |
LoadGraphやLoadSoundMemはファイルを読むので重い処理です。毎フレームの読み込みは避け、画像や音声はループの前など必要なタイミングで読み込みます。描画は毎フレーム行い、BGMの再生開始は場面の開始時、効果音の再生はイベント発生時に呼び出します。
キャラクターを左右に動かすゲームループ
以下は関数内に置くコードです。先ほどの最小コードのWinMain内を、ChangeWindowModeからDxLib_Endまで以下の内容に置き換え、末尾のreturn 0;は残してください。表示用のchara.pngを用意し、実行時の作業ディレクトリに置きます。Visual Studioから実行する場合は、プロジェクトの「デバッグ → 作業ディレクトリ」で配置先を確認してください。
ゲームは「入力を読む→位置を更新する→描く」を1フレームごとに繰り返します。公式リファレンスはProcessMessageをゲームのループに1回程度呼ぶよう説明しており、ウィンドウが閉じられると0以外を返すのでループの条件に使えます。ちらつきを防ぐには、描画先を裏画面(DX_SCREEN_BACK)にし、1フレーム分を描き終えてからScreenFlipで表へ切り替えます。
ChangeWindowMode(TRUE);
if (DxLib_Init() == -1) return -1;
SetDrawScreen(DX_SCREEN_BACK); // 描画先を裏画面にする
int chara = LoadGraph("chara.png"); // 読み込みはループの外
if (chara == -1)
{
DxLib_End();
return -1;
}
int x = 300;
int y = 220;
while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
{
ClearDrawScreen(); // 裏画面を消す
if (CheckHitKey(KEY_INPUT_RIGHT) == 1) x += 4;
if (CheckHitKey(KEY_INPUT_LEFT) == 1) x -= 4;
DrawGraph(x, y, chara, TRUE); // TRUE=透過色を有効にする
ScreenFlip(); // 裏画面を表へ出す
}
DxLib_End();
公式リファレンスのとおりScreenFlipは既定でモニターの垂直同期を待つので、60Hzの画面ならこのループはおおむね1秒に60回まわります。リフレッシュレートが144Hzのモニターでは移動が2倍以上速くなるため、速度を一定にしたい場合はGetNowCountの前フレームとの差を測り、1000.0で割って秒に換算し、毎秒の移動速度を掛けてください。座標は小数で保持し、描画時に整数へ変換します。ここに弾の配列と当たり判定を足せば、シューティングの骨組みになります。
DXライブラリのライセンスと配布時の著作権表記
公式の著作権ページは、DXライブラリで作ったソフトについて「ライセンス料等は(商用利用・法人利用問わず)一切発生しません」と明記しています。DXライブラリを使ったことを書く義務もありません。ここまでは多くの解説記事のとおりです。
見落とされやすいのは、DXライブラリが内部で使っている他のライブラリの扱いです。同じページは、libjpeg・libpng・zlib・libtiff・libogg・Opus・Bullet・Mersenne Twisterなどの著作権表記を、配布するソフトのドキュメント等に含めるよう求めています。たとえばzlibなら「Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler.」のような一文です。ゲームを配るときは、readmeやクレジット画面に公式ページの表記一覧を写しておくのが確実です。
- 実行ファイルだけを配る:ライセンス料なし。使用ライブラリの著作権表記をドキュメント等に載せる。
- libファイルやソースも配る:上に加えて「DX Library Copyright (C) 2001-2026 Takumi Yamada.」を添付文書に入れる。
- Live2Dの機能を使う:他の使用ライブラリの表記に加え、Live2Dの該当コンポーネントに適用されるOpen Software使用許諾契約とProprietary Software使用許諾契約を確認し、配布・出版の条件に従う。
ソースからDXライブラリを自分でビルドして使わない機能を外した場合は、その機能のライブラリの表記は不要です。表記の年号は公式ページ内でも箇所によって異なるため、同人頒布や販売の前には最新の公式ページを確認してください。
Siv3D・raylib・Unityとの比較と選び方
無料でゲームを作れるライブラリ・エンジンは他にもあります。DXライブラリと比べられることが多い3つと並べると、違いは「対応OS」と「書き方の新しさ」に出ます。
| 項目 | DXライブラリ | Siv3D | raylib | Unity |
|---|---|---|---|---|
| 言語 | C++(C#版あり) | C++20 | C(C99) | C# |
| 開発できるOS | Windows・macOS(iOS向け) | Windows・macOS・Ubuntu | Windows・macOS・Linux | Windows・macOS・Linux |
| 出力先 | Windows・Android・iOS | 上記+Web(非公式) | 上記+Android・HTML5 | PC・スマホ・Web・家庭用機 |
| ライセンス | 独自(使用料なし) | MIT | zlib/libpng | 無料枠+有料プラン |
DXライブラリを選ぶべきなのは、Windowsで、C++のポインタや配列、ループの仕組みを自分の手で書きながら覚えたい場合です。「14歳からはじめる」シリーズなどの入門書や、大学・専門学校の教材に使われているのも強みで、公式の日本語リファレンスと質問掲示板を参照しながら学べます。
反対に、macOS向けのデスクトップゲームを作りたい、ブラウザ向けの公式対応を重視したいなら、DXライブラリは選ばないほうがよいです。同じC++で開発でき、macOS版と有志による非公式のWeb版があるSiv3Dとは?無料C++ゲーム開発フレームワークのインストールと使い方【v0.6.16対応】が直接の代替になります。C言語だけで書きたいならraylib、ブラウザゲームならJavaScriptのPhaser.jsとは?使い方・入門をPhaser 4対応で解説|1ファイルで動くゲーム例・物理・3からの移行も候補です。本格的な3Dや複数機種への同時展開を最初から狙うなら、エディタ付きのUnityか、無料で使えるGodotのインストール方法|Windows・Mac・Linux別の手順と日本語化・動作要件【4.7.2対応】から始めるほうが遠回りになりません。企画段階からスマホ向けのゲームアプリを外部に依頼したい場合は、ゲームアプリ開発の支援内容も参考にしてください。
よくある質問
DXライブラリは無料ですか?商用利用もできますか?
無料です。作ったゲームを販売しても、法人が業務で使っても、DXライブラリのライセンス料はかかりません。ただし配布物のドキュメント等に、内部で使われているlibjpeg・libpng・zlibなどの著作権表記を載せる必要があります。
DXライブラリの最新バージョンはいくつですか?更新はどうすればいいですか?
2026年10月時点の最新はVer3.25a(2026年8月23日公開)です。更新するときは新しい版のzipを解凍し、「プロジェクトに追加すべきファイル_VC用」フォルダの中身を差し替えてビルドし直します。フォルダの場所を変えなければ、プロジェクトの設定はそのまま使えます。
DXライブラリはC言語やC#でも使えますか?
本体はC++向けですが、関数はC言語風の書き方で呼べるため、クラスを使わずにC言語の知識だけで書けます。C#用にはVisual C#用パッケージが同じVer3.25aで配布されています。
MacやスマホでDXライブラリは使えますか?
スマホ向けにはAndroid版とiOS版が公式配布されています。macOS向けのデスクトップ版は公式配布されていませんが、iOS版はMac上のXcodeで開発できます。macOS向けのゲームを作る場合はSiv3Dやraylibが候補です。ブラウザ向けには非公式のDxLibForHTML5があります。
DXライブラリの関数リファレンスはどこにありますか?
公式サイト「DXライブラリ置き場」の関数リファレンスマニュアル(dxfunc.html)に、主要な関数の引数・戻り値・サンプルがまとまっています。リファレンスに載っていない関数は、パッケージ内のDxLib.hに説明コメント付きで宣言されています。