制作DLL以替换系统库中的函数调用的问题

Ste*_*art 1 c++ windows opengl

我试图在Windows上制作一个假的opengl32.dll来捕获OpenGL调用.当我将DLL放在与简单的OpenGL应用程序相同的目录中并运行时,我收到此错误:

程序入口点glMap1f无法位于动态链接库OPENGL32.dll中

这很奇怪,因为我的代码中有一个虚函数用于每个OpenGL调用,包括这个.在我的头文件中,我有:

void __declspec(dllexport) glMap1f (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
Run Code Online (Sandbox Code Playgroud)

并在源文件中:

void  glMap1f (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points){}
Run Code Online (Sandbox Code Playgroud)

而且我很确定编译器没有优化它,因为在文本编辑器中查看DLL,我可以找到文本"glMap1f".

可能是什么导致了这个?此外,我不确定如何让Visual Studio调试覆盖实际系统DLL的DLL,因此我无法获得更多信息.

Den*_*nis 6

您可能需要extern "C"在glMap1f的声明前面,以防止编译器使用名称修改.