问题
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?
回答1:
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
来源:https://stackoverflow.com/questions/49741322/glew-why-should-i-define-glew-static