ランタイムエラー「エントリポイントが見つかりません」の原因は何ですか?
-
19-09-2019 - |
質問
私は、Visual Studio 8から作成されたプログラムをコンパイルしようとしている、すべての必要な.DLL、.libファイル、およびディレクトリの#includeを与えた後、私はプログラムを正常にコンパイルされたVisual Studioの9にそれを変換します。私はそれを起動しようとしたときにしかし、それは常にエラーを与えます:
プロシージャエントリポイントSwapBuffersは、ダイナミックリンクライブラリOPENGL32.DLLに配置することができませんでした。の
私は自分のディレクトリを確認しました。 OPENGL32.DLLは存在しません!私も鉱山が古いバージョンである、場合には、再びOPENGL32.DLLをダウンロードしてください。いや、それは動作しません。私も右に建て.exeの横にOPENGL32.DLL入れてみました。いや、それはまだ同じエラーを与えます。
あなたは、考えられる原因のいくつかはここにあるものを知っているように見えるのですか?
解決
単に存在しないSwapBuffers
機能のように見えます。あなたは未定義の参照または例えば約コンパイル時に警告を得るのですか?
のエクスポートテーブルを表示し、機能を探すために適切なツールを使用してDLLを探検してみ - それはあるかどうSE(Googleは私にこれを与えた:<のhref =「http://www.heaventools.com/PE_Explorer_Exports_Viewer.htm」 rel = "nofollowをnoreferrer"> DLLのエクスポートビューアの)
また、このようdynamiclyそれをロードしようとすることができます:
HMODULE lib = LoadLibraryA("OpenGL32.DLL");
FARPROC WINAPI proc = GetProcAddress(lib, "SwapBuffers");
if (!proc)
printf("SwapBuffers() not found\n");
malaligned得るかもしれないDLL(おそらくSTDCALL)またはあなたのスタックで使用される呼び出し規約を知らなくても、直接関数ポインタproc
を呼び出すように注意してください。