スキップしてメイン コンテンツに移動

PCゲームやソフトがDLLを読み込む場所と順番

PCゲームやソフトを必要なDLLが無くて動かないときに「DLLが見つかりません」のメッセージが出たりします。

ランタイムパッケージを入れたり、DLLを準備したときにどのようにDLLが検索されているか重要です。


DLLを読み込む場所と順番

  1. アプリケーションの実行ディレクトリ
  2. システムディレクトリ(例:C:\Windows\System32やC:\Windows\SysWOW64)
  3. Windowsディレクトリ(例:C:\Windows)
  4. カレントディレクトリ
  5. 環境変数PATHに含まれるディレクトリ
この検索順序の特性で先に読ませたいDLLをロードさせることも可能です。

64bit環境で32bitアプリを動かす時

64bit環境のOSではシステムディレクトリ(C:\Windows\System32)は64bitのDLLが入っているため、32bitアプリではSystem32のDLLは利用されません。

SysWOW64の仕組みで32bitのDLLが用意されているC:\Windows\SysWOW64のディレクトリが利用されます。

このブログの人気の投稿

Win95/98時代のゲームを今のWindows10/11で遊ぶ・動かす方法

 昔のWindows95/98時代のゲームを今でも遊びたいという人は多いと思います。自分もそうです。 でもWindows10やWindows11で動かそうとしてもそのままではうまく動かないときが多いので対処方法をまとめておきます。 対処方法の一覧 対処方法1:ゲームのインストーラが動かないときはゲームが入っているメディア(FD・CD)から直接コピーする 対処方法2:古い環境でゲームをセットアップして内容をコピーする 対処方法3:DirectX 9.0cをインストールする 対処方法4:互換モードを利用する 対処方法5:DXWndでフルスクリーンゲームをウインドウ化する 対処方法6:DDrawCompatでグラフィックス関連の互換性を上げる 対処方法7:_inmm.dllでCD音源を再生できるようにする 対処方法8:64bit環境ならWOW64の仕組みをふまえて調整する 起動したゲームの例 ぷよぷよ、ぷよぷよ通、バーチャファイターPC、電脳戦機バーチャロン 対処方法1:ゲームのインストーラが動かないときはゲームが入っているメディア(FD・CD)から直接コピーする Windows95/98時代のゲームのインストーラは今のWindowsでうまく動かなかったりします。 ゲームが入っているメディア(FD・CD)を見てみて、ゲームの実行プログラム(EXEプログラム)やゲームのファイルがそのまま見える状態ならコピーしてみましょう。 もしsetup.exeや内容がCABファイルで圧縮されているゲームはセットアップが必要でこの方法は使えません。 手順 1. ゲームが入っているメディア(FD・CD)をエクスプローラで開く 2. ゲームのプログラム(EXE)やDLLファイル、WAVやMIDファイル、TXTファイル、その他ファイルなどが沢山入っているフォルダがあるか確認する 3. 見つかったらCドライブにゲーム名のフォルダを作り、中身をコピーする 4. ゲームのプログラム(EXE)を実行してみて動くか試してみます 対処方法2: 古い環境でゲームをセットアップして内容をコピーする 対処方法1ができないゲームはWindows XPなどの少し前のパソコンがあれば、そこにセットアップしたものをコピーする方法があります。 ただしファイルのコピーだけでは動かず、セットアップでレジストリに登録され...

Windows11 24H2から23H2にダウングレードする方法

Windows11 23H2のパソコンをWindows11 24H2にアップグレードしたあとに、23H2に戻す(ダウングレードする)方法です。 復元するには前提条件があるので確認してから対応してください。 前提条件 アップグレードしてから10日以内 Cドライブに「Windows.old」フォルダがある 対応方法 1. Windowsの「設定」を開きます。 2. 設定画面の左側の一覧から「システム」を開きます。 3. 右側の一覧でスクロールして「回復」をクリック。 4. 「回復オプション」の「復元」にある「戻す」をクリック。 5. 「以前のビルドに戻す」ウインドウが出るまで待ちます。 6. 「フィードバックを共有してください」と表示されたら、「次へ」をクリック。 7. 「アップデートをチェックしますか?」と表示されたら、「行わない」をクリック。 8. 「知っておくべきこと」と表示されたら、内容を確認して「次へ」をクリック。 9. 「ロックアウトされないようにご注意ください」と表示されたら、内容を確認して「次へ」をクリック。 10. 「このビルドをお試しいただきありがとうございます」と表示されたら、「以前のビルドに戻す」をクリック。 11. 復元が始まるので待ちます。(1時間程度) 12. ログイン画面になったらログインします。 対応後 復元が問題なく完了していればWindows11 23H2に戻っています。

32bitゲームを64bit環境で動かすWindowsの仕組みWOW64

Windowsで動くゲームは昔のWindows95/98用ゲームから始まり、ちょっと前のWindowsまで大半のゲームは32bitコードのプログラムです。 今のWindowsを64bit環境で使っている人が多いと思いますが、そのままでは32bitコードのプログラムは動きません。Windows側で「WOW64」というエミュレーションがされます。 WOW64を理解しておくことで昔のゲームを今のパソコンで動かせる可能性が高まります。 WOW64とは Windows 32bit On Windows 64bitの略。64bitのWindowsで32bitコードのプログラムを動かすエミュレーションの仕組みです。 CPU自体だとx86の64bit化自体は32bitとの互換性が高い状態で拡張されています。加えてWindows側は32bitコードのプログラムの互換性を維持するためにWOW64の仕組みが動いて対応します。 64bit環境で32bitコードのプログラムは以下のような動き、制限があります。 32bitコードのプログラム向けに32bitで扱える仮想メモリ空間が割り当てられる 32bitコードのプログラムと64bitコードのプログラムは1つのプロセス内に混在できない DLLも32bitコードのプログラムは32bitコードのDLLを呼び出す必要がある。32bitコードのプログラムから64bitコードのDLLを呼び出せない Windowsのシステムフォルダやレジストリは32bitコード用に用意されたものにアクセスするようにリダイレクトする 32bitのゲームを64bit環境で動かすときのポイント 古いゲームのインストール先は標準のProgam Filesフォルダにしない 64bit環境では64bitコードのプログラムは C:¥Program Files に、32bitコードのプログラムは C:¥Program Files(x86) にインストールされます。Program Files(x86)やProgram FilesフォルダはWindowsの管理下になっています。 Win95/98向けのような古いゲームをこれらのフォルダにセットアップしようとしても、セットアップが途中で失敗したり、入ってもゲームが動かなかったりします。 古いゲームをセットアップするとき、手動でファイルをコピーし...