2

我正在尝试编译从 Visual Studio 8 创建的程序,将其转换为 Visual Studio 9。在提供所有必需的 .DLL、.lib 和 #include 目录后,我成功编译了该程序。但是,当我尝试启动它时,它总是给出一个错误:

过程入口点 SwapBuffers 无法位于动态链接库 OpenGL32.DLL 中。

我检查了我的目录。OpenGL32.DLL 确实存在!我什至再次下载 OpenGL32.dll,以防万一,我的是旧版本;不,它不起作用。我什至尝试将 OpenGL32.dll 放在内置的 .exe 旁边。不,它仍然给出同样的错误。

您似乎知道这里的一些可能原因是什么?

4

1 回答 1

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)的情况下直接调用函数指针时要小心,否则您的堆栈可能会错位。

于 2010-02-10T00:09:29.427 回答