我有两个项目;静态库和可执行文件(标准Win32设置,使用多线程调试DLL设置)。
在我的libray中,我有一个Globals.h
,代码如下:
#ifndef _GLOBALS_H
#define _GLOBALS_H
#include <SDL.h>
#include <string>
namespace Eng
{
bool Run = true;
SDL_Window *Window = NULL;
SDL_GLContext GlContext;
Uint32 WindowFlags = SDL_WINDOW_OPENGL;
}
#endif
这一切都很好,花花公子,在那个项目中一切正常。但是,只要我将该文件包含在我的可执行项目中的多个文件中(所有文件都受包含警卫保护),我就会开始为Globals.h
中的每个变量获取多个定义的符号错误。
同样,我从math.h
(M_PI macro redefinition
)收到了一些宏重新定义警告。我不确定这是否相关,但似乎可能是由于错误的类似性质(在一个项目中定义的警卫似乎没有在另一个项目中应用)。
任何人都有任何想法如何解决这个问题?我觉得我在某个地方错过了一些非常重要的编译器设置:(