GLEW - 我为什么要定义GLEW_STATIC?

时间:2018-04-09 20:35:41

标签: opengl glew

我正在为GLEW使用静态链接库,因此我必须定义GLEW_STATIC来编译使用GLEW的程序。但我永远不明白为什么这是必要的。那么有人可以解释原因吗?

1 个答案:

答案 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