GLEW - why should I define GLEW_STATIC?

2020-04-10 23:21发布

I am using a statically linked library for GLEW and therefore I have to define GLEW_STATIC to compile my programs that are using GLEW. But I have never understood why this is necessary. So could anyone explain the reason?

标签: opengl glew
1条回答
▲ chillily
2楼-- · 2020-04-10 23:44

The signature of a function which is exported by or imported from a static library is marked by the keyword export. A function which is imported from a dynamic library has to be marked by extern __declspec(dllimport). GLEW_STATIC is a preprocessor definition which activates the first case.

The relevant code part in the "glew.h" file (verison 2.1.0) is:

/*
 * 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
查看更多
登录 后发表回答