2010-02-08 36 views
1

我想编译一个从Visual Studio 8创建的程序,将它转换为Visual Studio 9.在给出所有需要的.DLL,.lib和#include目录后,我成功编译了程序。但是,当我尝试启动它时,它总是给出错误:“找不到入口点”运行时错误的一些可能原因是什么?

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

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

您是否似乎知道这里有些可能的原因?

+0

是否与您的可执行文件在同一目录中的dll? – Amirshk 2010-02-08 10:31:13

+0

是的,它也在同一个目录中。 – Karl 2010-02-08 10:42:45

回答

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),否则堆栈可能会失准。

相关问题