昨天在调试时出现外部符号无法加载的情况,经查发现是复制外来程序的OpenGL代码直接粘贴进程序,未进行必要的声明所致。
起初很疑惑,因为头文件静态库一个不缺,函数声明及定义都可以转到,不可能会出现这种问题。后来发现是该程序(某图形引擎)在导入OpenGL库时还将函数进行了各种宏定义及声明赋值
(看起来是API的入口)
extern GLuint (APIENTRY *GET_PROC_NAME(glGenLists))(GLsizei range);
#define glGenLists GET_PROC_NAME(glGenLists)
GLuint (APIENTRY *GET_PROC_NAME(glGenLists))(GLsizei range) = NULL;
GET_PROC_ADDRESS(glGenLists)
上面两个在.h文件里,下面两个在.cpp文件中。
因此,在导入OpenGL函数后,还需经过以上操作才能正确使用导入的函数。