私は同様の質問を読んだが、私に答えるものはVisualStudioにのみ適用される。私はEclipseを使用しており、AndroidのNDKを使用するフレームワークであるCocos2d-Xを使用してAndroidアプリケーションを開発しています。 Configという名前のクラスを作成しました。このクラスには、ボールのサイズやfpsなどのアプリケーションのすべての定数が含まれています。以下は私がコードをどのように配置したかです。Android用EclipseのC++静的定数複数宣言エラーNDK
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):`
previo私たちのエラーは、宣言されたすべての定数に対して発生します。私は報告されたソースファイルのソースコードにConfig.cppを含めていません。
これを修正する方法はわかりません。私は非常によく似た質問を見つけましたが、その回答はMicrosoftのVisualStudioに指定されました。また、「cocos2d」タグを使用することについて申し訳ありませんが、これがcocos2d-Xに適用される場合でも、誰かがこれを修正する方法を知っていることを期待しています。
複数の定義のようには見えません。それは定義がないように見えます。静的const doubleの代わりにConfig.hで 'static const double gravity = 9.8;'を試してみてください。GRAVITY = 9.8;あるいは '#define GRAVITY gravity'はどこかで行われますか? – Mayank
':: GRAVITY'は' Config :: gravity'と何が関係していますか?これはおそらくあなたの実際のコードではありません... – ildjarn
申し訳ありませんが、私は注意を払っていないので、私はサンプルコードが間違っていたことに気付かなかった。安心して、私の実際のコードはすべての命名規則に準拠しています。私はサンプルを修正し、実際のコードがどのように見えるかを反映します。私は間違った名前を使用していたと思いますが、おそらくコンパイラチェックに合格していないでしょう。 – cesar