OpenGLを使用してC++で簡単なプログラムを作成しました。私が必要としているのは、同じ値を保持する2つのファイル( 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で参照したり、逆にしたりすることはできません。そして私の2番目の質問は-私の問題を解決するための最良の方法は何ですか?私がしたことはこれらの変数のいくつかの名前を変更し(それらの多くがあります)、setNewValue(int newValue)
main.cppから呼び出すことができるような関数をfuncs.cppに追加するだけですしかし、正直に言うと、私はそれを誇りに思っていません。
私はMicrosoftVisualStudio 2012、C ++/OpenGLを使用しています。