问题描述
||
我读过类似的问题,但是回答我的问题仅适用于VisualStudio。我正在使用Eclipse,并使用Cocos2d-X开发了一个Android应用程序,这是一个使用Android的NDK的框架。我创建了一个名为Config的类,其中包含应用程序的所有常量,例如球形和fps。下面是我如何安排代码。
配置文件
#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 */
配置文件
#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 \'标记,但我希望有人知道如何解决此问题。
解决方法
可能会发生错误的唯一方法是,如果您周围包含.cpp文件。否则,您的代码完全符合标准。毕竟,错误意味着常量是在
Ball.o
中定义的,除非您包含cpp,否则我发现它不太可能。
,在您的情况下,名称不匹配。您声明为gravity
,而在cpp中为GRAVITY
。
编辑:编辑后,除非您还在Ball.cpp/h
文件中定义了GRAVITY
,否则您的代码中看不到链接错误。