VirtualboxでのOpenGL実装の(この質問には関係ありません)制限のため(OpenGLバージョン1.1のみが利用可能ですが、少なくともバージョン2.0が必要です)DLL)の形式でソフトウェア実装を使用することにしました=(名前付きopengl32.dll)ここからダウンロードできます: ftp://ftp.blender.org/sergey/softwaregl/
これを行う1つの方法は、ファイルopengl32.dllを実行可能ファイルと同じディレクトリに直接配置することです。
私の質問は、DLLファイルをコピーせずに、このソフトウェア実装をすべてのプログラムで利用できるようにするための最良の方法は何ですか。
重要なお知らせ:すべての32ビットアプリケーションには、このFTPサーバーのディレクトリ / win32 / からのファイルopengl32.dllが必要です。すべての64ビットアプリケーションにはファイルopengl32.dll(同じ名前ですが、別のファイルです!)ディレクトリから / win64 / 。したがって、コンピュータの同じディレクトリに1つの32ビットアプリケーションと1つの64ビットアプリケーションがある場合、DLLを同じフォルダに入れるという解決策は機能しません。2つにすることはできません。同じディレクトリ内の同じ名前の異なるファイル。
64ビットのdll
をc:\Windows\System32
に、32ビットのdll
をc:\Windows\SysWOW64
に配置する必要があります。
Windows 10では、元のOpenGL32.dll
ファイルにはTrustedInstaller
ユーザーのみがアクセスできることに注意してください。したがって、それらを置き換えるには、それらのファイルの所有権をAdministrator
に変更する必要があります。私にとっては、UIを使用してそれを行うことはできませんでしたが、コマンドラインアプローチは機能しました。これを行うには、管理者としてCommand Prompt
を実行します。次に、次のコマンドを使用して、元のOpenGL32.dll
ファイルを削除します。
takeown /F C:\Windows\System32\OpenGL32.dll /A icacls C:\Windows\System32\OpenGL32.dll /T /grant administrators:F move C:\Windows\System32\OpenGL32.dll C:\Windows\System32\OpenGL32.dll.orig
C:\Windows\SysWOW64
ディレクトリについても同じです。
その後、管理者として自分のOpenGL32.dll
をそれらの場所にコピーするだけです。
通常の解決策は、次のような2つのサブフォルダーを作成することです。
Installation folder
|--- Win32 DLL
|--- Win64 DLL
プログラムの.exe
はメインフォルダに配置されますが、直接呼び出されることはありません。代わりに、Windowsが32ビットか64ビットかをチェックする.bat
ファイルを介して開始され、一致するサブフォルダーのコンテキストで.exe
を開始します。 DLLはいくつかのフォルダーで検索され、そのうちの1つは現在のフォルダーです。
投稿を参照してください 64ビットまたは32ビットOSをチェックするためのバッチファイル 。
.bat
ファイルが黒い四角いウィンドウとして表示されるのが心配な場合は、投稿で説明されているように非表示で開始できます 完全に非表示の方法でバッチファイルを実行します 。このような非表示のバッチファイルから起動されたGUIプログラム自体は非表示になりません。
KnownDLL
メカニズムを使用すると役立つ場合があります。既知のDLLはファイルシステム検索をバイパスし、代わりに単一の固定ディレクトリからロードされます。便利なことに、64ビットプロセス用に1つのKnownDLLディレクトリと32ビットプロセス用に1つのKnownDLL32ディレクトリがあります。