Я читал подобные вопросы, но тот, который отвечает на мои, относится только к VisualStudio.Я использую Eclipse и разрабатываю приложение для Android с использованием Cocos2d-X, фреймворка, использующего Android NDK.Я создал класс с именем Config, который содержит все константы приложения, такие как размеры шариков и fps.Ниже показано, как я расположил код.
Config.h
#ifndef __CONFIG_H_ // this was auto-generated by eclipse
#define __CONFIG_H_
class Config {
public:
static const double GRAVITY;
static const int BALL_WIDTH;
static const int BALL_HEIGHT;
}
#endif /* config.h */
Config.cpp
#include "Config.h"
const double Config::GRAVITY = 9.8;
const int Config::BALL_WIDTH = 100;
const int Config::BALL_HEIGHT = 100;
Компилируется без ошибок, но когданачинается связывание, я получаю следующую ошибку:
multiple definition of `Config::GRAVITY'
C:/workspace/cocos2d-x/SampleGame/android/obj/local/armeabi/objs-debug/game/../../../Classes/Config.o:(.rodata+0xc8): first defined here
C:/workspace/cocos2d-x/SampleGame/android/obj/local/armeabi/objs-debug/game/../../../Classes/Ball.o:(.rodata+0xcc):`
Предыдущая ошибка возникает для всех объявленных констант.Я не включил Config.cpp в исходный код любого из сообщенных исходных файлов.
Я понятия не имею, как это исправить.Я нашел чрезвычайно похожий вопрос, но ответ был указан в отношении VisualStudio от Microsoft.Кроме того, я прошу прощения за использование тега «cocos2d», даже если это относится к cocos2d-X, но я надеюсь, что кто-то знает, как это исправить.