GLEW - 我为什么要定义 GLEW_STATIC?

GLEW - why should I define GLEW_STATIC?

我正在为 GLEW 使用静态链接库,因此我必须定义 GLEW_STATIC 来编译我使用 GLEW 的程序。但我一直不明白为什么这是必要的。那么谁能解释一下原因?

在必须指定的静态库中实现函数时。 extern keyword provides linkage information. A function which is imported from a dynamic library has to be marked by 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