2

私は同様の質問を読みましたが、私の答えは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」タグを使用して申し訳ありませんが、誰かがこれを修正する方法を知っていることを望んでいます。

4

2 に答える 2

1

エラーが発生する可能性がある唯一の方法は、.cppファイルを含めている場合です。それ以外の場合、コードは完全に標準に準拠しています。結局のところ、エラーは定数がで定義されたことを意味しBall.oます。これは、cppを含めない限り非常にありそうもないことです。

于 2011-05-26T09:55:07.677 に答える
0

あなたの場合、名前が一致しません。gravityあなたはcpp でas と宣言していGRAVITYます。

編集:編集後、ファイルでも定義GRAVITYしない限り、コードにリンクエラーは表示されません。Ball.cpp/h

于 2011-05-26T09:45:41.620 に答える