2

Visual Studio 8 から作成され、Visual Studio 9 に変換されたプログラムをコンパイルしようとしています。必要な .DLL、.lib、および #include ディレクトリをすべて指定した後、プログラムを正常にコンパイルしました。ただし、起動しようとすると、常にエラーが発生します。

プロシージャ エントリ ポイント SwapBuffers が、ダイナミック リンク ライブラリ OpenGL32.DLL 内に見つかりませんでした。

ディレクトリを確認しました。OpenGL32.DLL は存在します! 念のため、OpenGL32.dll をもう一度ダウンロードします。私のバージョンは古いです。いいえ、うまくいきません。ビルドされた.exeのすぐ横にOpenGL32.dllを入れてみました。いいえ、それでも同じエラーが発生します。

ここで考えられる原因のいくつかを知っているように見えますか?

4

1 に答える 1

1

SwapBuffers関数が単にそこにないように見えます。未定義の参照などについて、コンパイル時に警告が表示されますか?

適切なツールを使用してdllを調べて、エクスポートテーブルを表示し、関数を探します-そこにある場合はse(​​Googleはこれをくれました:DLL Export Viewer

次のように動的にロードすることもできます。

HMODULE lib = LoadLibraryA("OpenGL32.DLL");
FARPROC WINAPI proc = GetProcAddress(lib, "SwapBuffers");

if (!proc)
   printf("SwapBuffers() not found\n");

procdll で使用されている呼び出し規則 (おそらく stdcall) を知らずに関数ポインターを直接呼び出すと、スタックが正しく配置されない可能性があるので注意してください。

于 2010-02-10T00:09:29.427 に答える