我正在为GLEW使用静态链接库,因此我必须定义GLEW_STATIC来编译使用GLEW的程序。但我永远不明白为什么这是必要的。那么有人可以解释原因吗?
答案 0 :(得分:2)
由静态库导出或从静态库导入的函数的签名由关键字export
标记。从动态库导入的函数必须由extern __declspec(dllimport)
标记。 GLEW_STATIC
是一个预处理器定义,用于激活第一种情况。
“glew.h”文件(verison 2.1.0)中的相关代码部分是:
/*
* GLEW_STATIC is defined for static library.
* GLEW_BUILD is defined for building the DLL library.
*/
#ifdef GLEW_STATIC
define GLEWAPI extern
#else
ifdef GLEW_BUILD
define GLEWAPI extern __declspec(dllexport)
else
define GLEWAPI extern __declspec(dllimport)
endif
#endif