Я использую Qt 4.7 и Cmake 2.8.3 с g ++ 4.2.1 на Mac OS X.
Я получаю странную ошибку компоновщика при использовании статических или глобальных переменных в одном из моих файлов.
Вот ошибка:
ld: duplicate symbol ColorTrail::calculateColorUniformLocation in CMakeFiles/GLBall.dir/src/DesktopMain.cpp.o and CMakeFiles/GLBall.dir/src/ColorTrail.cpp.o
collect2: ld returned 1 exit status
convertColorUniformLocation является статическим членом класса ColorTrail ... но он даже не используется в DesktopMain.cpp!
Вот что я пробовал:
Переименование переменной не решает проблему.
Перемещение переменной из класса и просто превращение ее в простую глобальную переменную также не исправляет это
Файл ColorTrail.h:
#ifndef COLORTRAIL
#define COLORTRAIL 9
#include "GlobalConstants.h"
#include <vector>
using namespace std;
class ColorTrail
{
private:
//note that this is NOT a Q_OBJECT
static GLint calculateColorUniformLocation;
//omitted for brevity
};
GLint ColorTrail::calculateColorUniformLocation;
#endif
DesktopMain.cpp использует класс ColorTrail, но не статически и никогда не ссылается на переменную.
Кто-нибудь знает, что может быть не так / у него была похожая проблема с Qt?