我正在尝试编译从Visual Studio 8创建的程序,将其转换为Visual Studio 9.在提供了所有必需的.DLL,.lib和#include目录之后,我成功编译了该程序。但是,当我尝试启动它时,它总是会发出错误:
无法在动态链接库OpenGL32.DLL中找到过程入口点SwapBuffers。
我检查了我的目录。 OpenGL32.DLL确实存在!我甚至再次下载OpenGL32.dll,以防我的旧版本;不,它不起作用。我甚至尝试将OpenGL32.dll放在内置的.exe旁边。不,它仍然会发出同样的错误。
你似乎知道这里有什么可能的原因吗?
答案 0 :(得分:1)
看起来SwapBuffers
函数根本就不存在。您是否在编译时收到有关未定义引用的警告?
尝试使用适当的工具探索dll以查看导出表并查找函数 - 如果它在那里(谷歌给了我这个:DLL Export Viewer)
您也可以尝试动态加载它:
HMODULE lib = LoadLibraryA("OpenGL32.DLL");
FARPROC WINAPI proc = GetProcAddress(lib, "SwapBuffers");
if (!proc)
printf("SwapBuffers() not found\n");
小心地直接调用函数指针proc
,而不知道dll中使用的调用约定(可能是stdcall),否则你的堆栈可能会被填写。