Dll “可能的原因有哪些?”;“未找到入口点”;运行时错误?

Dll “可能的原因有哪些?”;“未找到入口点”;运行时错误?,dll,runtime-error,Dll,Runtime Error,我正在尝试编译一个从VisualStudio8创建的程序,并将其转换为VisualStudio9。在给出所有必需的.DLL、.lib和#include目录后,我成功地编译了该程序。但是,当我尝试启动它时,它总是给出一个错误: 在动态链接库OpenGL32.DLL中找不到过程入口点SwapBuffers 我检查了我的目录。OpenGL32.DLL确实存在!我甚至再次下载OpenGL32.dll,以防我的是旧版本;不,它不起作用。我甚至试着把OpenGL32.dll放在build.exe旁边。不,它

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

在动态链接库OpenGL32.DLL中找不到过程入口点SwapBuffers

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


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

看起来好像
交换缓冲功能根本不存在。您是否在编译时收到关于未定义引用之类的警告

尝试使用适当的工具浏览dll以查看导出表并查找函数-se(如果有)(google给了我这个:)

您也可以尝试动态加载它,如下所示:

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

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

在不知道dll(可能是stdcall)中使用的调用约定的情况下,请小心直接调用函数指针
proc
,否则堆栈可能会对齐错误。

dll是否与可执行文件位于同一目录中?是的,它也位于同一目录中。