我有一个库 opengl.lib,其中包含所有 opengl 函数的包装函数。这些函数在它们自己的命名空间中声明,以便包装函数可以使用与 opengl 函数相同的名称命名。所以在包装函数内部,opengl 函数是用 ::gl***(); 调用的。
opengl.h:
namespace OpenGL {
void glFunction();
}
opengl.cpp:
void OpenGL::glFunction() {
::glFunction();
}
现在的问题是,当我在我的应用程序中使用这个 opengl.lib 并包含我自己的“opengl.h”时,由于某种原因,真正的 opengl 函数被直接调用,而不是我的包装函数。
我已经确定我没有包含任何真正的 opengl.h,所以这一定是某种链接器问题。我该如何解决?我在库路径中也有真正的 opengl 库,否则我的 opengl.lib 中会出现链接器错误,因为它使用了真正的 opengl 函数。所以真正的 opengl 库和我的 opengl.lib 以某种方式混合在一起,链接器决定使用真正的 opengl.lib 而不是我的。
我知道我可以通过将包装函数重命名为其他名称来解决此问题,但我想使用相同的名称。
这个问题与我之前的问题C++ wrapper with same name?
我正在使用禁用优化的 Visual C++。