Android 日食ADT“;对(自定义类)的未定义引用“;,但在Xcode中工作良好(使用Cocos2dx)

Android 日食ADT“;对(自定义类)的未定义引用“;,但在Xcode中工作良好(使用Cocos2dx),android,c++,eclipse,xcode,cocos2d-x,Android,C++,Eclipse,Xcode,Cocos2d X,我有一个项目在Xcode中功能齐全,但没有在EclipseADT中编译。我曾经成功编译并运行过android应用程序,但这是我第一次创建自定义类。要复制此问题,请执行以下操作: 我创建一个新项目,然后添加以下两个文件: //Enemy.cpp #include "Enemy.h" USING_NS_CC; bool Enemy::init() { if(!Layer::init()) return false; return true; } //Enemy.

我有一个项目在Xcode中功能齐全,但没有在EclipseADT中编译。我曾经成功编译并运行过android应用程序,但这是我第一次创建自定义类。要复制此问题,请执行以下操作:

我创建一个新项目,然后添加以下两个文件:

//Enemy.cpp
#include "Enemy.h"
USING_NS_CC;

bool Enemy::init()
{
    if(!Layer::init())
        return false;

    return true;
}

//Enemy.h
#ifndef __ColorMirror__Enemy__
#define __ColorMirror__Enemy__

#include <iostream>
#include "cocos2d.h"
USING_NS_CC;

class Enemy : public cocos2d::Layer{

public:
    CREATE_FUNC(Enemy);
    virtual bool init();
};

#endif
这会在Xcode中按预期编译和运行,但当我运行build_native.py时,会出现以下错误:

jni/../../Classes/Enemy.h:19: error: undefined reference to 'Enemy::init()'
jni/../../Classes/Enemy.h:19: error: undefined reference to 'vtable for Enemy'
通过检查jni/../../Classes文件,我能够找到敌方.h和敌方.cpp

我在Eclipse的其他版本中看到了一些关于修复的解释,并认为这是链接器错误,但我还没有弄清楚如何在ADT中修复它


谢谢

因此,我不完全确定这些步骤中的哪一个解决了问题,很可能是多个问题,但以下是我所做的:

1) 在Android.mk中添加了敌方.cpp,如下所示:

Enemy *newEnemy = Enemy::create();
Browse to game folder /proj.android/jni and open Android.mk
Open with TextEdit
Below the AppDelegate.cpp in LOCAL_SRC_FILES: added this:
    ../../Classes/Enemy.cpp \
Save
(还是不起作用,所以我把它拿了出来)

2) 更改了Eclipse的工作区(在打开Eclipse时指定)并删除了旧工作区

3) 下载并设置最新的ADT包(EclipseJuno)

4) 将Cocos2d-x从3.1升级到3.2

(仍然不起作用)

5) 再次向Android.mk添加了敌方.cpp

完成所有这些步骤后,一切工作正常,编译过程与以前一样


感谢Wez Sie Tato确认实际上需要将敌手.cpp添加到Android.mk。。。根据我在其他地方看到的一些评论,我的ADT软件包可能由于Android.mk中没有合适的行而受到了某种程度的损坏。你是否在Androik.mk中添加了敌手.cpp?我尝试过,但没有成功。我可能做错了,我打开了Android.mk,在本地_SRC_文件下添加了:../../Classes/friend.cpp\n这一次都很有效,现在它挂在“启动…”上,以一种可笑的速度复制。。。10分钟后达到88兆,5分钟后达到93兆,剩下500兆。。。