我使用 OpenGL 用 C++ 编写了一个简单的程序。我需要的是在两个文件(main.cpp和funcs.cpp )中有几个全局变量,它们将保存相同的值。当我尝试在funcs.h(也包含在main.cpp中)中声明这些变量时,我收到了这个错误:
1>main.obj : error LNK2005: "int myVariable" (?myVariable@@3HA) already defined in funcs.obj
1>Path to my program : fatal error LNK1169: one or more multiply defined symbols found
这很明显,因为它会在 funcs.cpp 和 main.cpp 中创建变量。当我尝试以这种方式声明变量时:
//funcs.cpp
int myVariable;
//main.cpp
int myVariable;
而且它们都是全球性的,我得到的错误与上面完全相同。我感兴趣的是这两个变量在相反的文件中都不可见,那么为什么使用同名的变量是错误的呢?据我所知,没有可能myVariable
从 main.cpp 引用 funcs.cpp 和反向。我的第二个问题是 - 解决我的问题的最佳方法是什么,因为我所做的只是重命名了其中一些变量(其中有很多)并在 funcs.cpp 中添加函数,就像setNewValue(int newValue)
我可以从 main.cpp 调用一样但说实话 - 我并不为此感到自豪。
我使用 Microsoft Visual Studio 2012、C++/OpenGL。