私は同様の質問を読みましたが、私の答えはVisualStudioにのみ適用されます。私はEclipseを使用しており、AndroidのNDKを使用するフレームワークであるCocos2d-Xを使用してAndroidアプリケーションを開発しています。ボールサイズやfpsなど、アプリケーションのすべての定数を含むConfigという名前のクラスを作成しました。以下は私がコードをどのように配置したかです。
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を含めていません。
これを修正する方法がわかりません。非常によく似た質問を見つけましたが、その答えはMicrosoftのVisualStudioに向けて指定されました。また、これがcocos2d-Xに適用される場合でも、「cocos2d」タグを使用して申し訳ありませんが、誰かがこれを修正する方法を知っていることを望んでいます。