Cocos2dx3.2NDK r10d生成生成android失败

F:\softwork\Cocos2dxWork\Bear\proj.android>python build_native.py
The Selected NDK toolchain version was 4.8 !
Android NDK: WARNING: APP_PLATFORM android-19 is larger than android:minSdkVersi
on 9 in ./AndroidManifest.xml
Android NDK: WARNING:jni/…/…/cocos2d/cocos/./Android.mk:cocos2dx_static: LOCAL
_LDLIBS is always ignored for static libraries
Android NDK: WARNING:jni/…/…/cocos2d/cocos/platform/android/Android.mk:cocos2d
xandroid_static: LOCAL_LDLIBS is always ignored for static libraries
make.exe: Entering directory F:/softwork/Cocos2dxWork/Bear/proj.android' SharedLibrary : libcocos2dcpp.so jni/../../Classes/Bear.h:7: error: undefined reference to 'Bear::Bear()' clang++.exe: error: linker command failed with exit code 1 (use -v to see invoca tion) make.exe: *** Error 1 make.exe: Leaving directory F:/softwork/Cocos2dxWork/Bear/proj.android’
Traceback (most recent call last):
File “build_native.py”, line 159, in
build(opts.ndk_build_param,opts.android_platform,opts.build_mode)
File “build_native.py”, line 146, in build
do_build(cocos_root, ndk_root, app_android_root,ndk_build_param,sdk_root,and
roid_platform,build_mode)
File “build_native.py”, line 82, in do_build
raise Exception(“Build dynamic library for project " + app_android_root +
" ] fails!”)
Exception: Build dynamic library for project F:\softwork\Cocos2dxWork\Bear\pro
j.android ] fails!

F:\softwork\Cocos2dxWork\Bear\proj.android>
Bear的构造函数,析构函数都有NDK9-10都试过了

win7x64 用python build_native.py 之前所有代码都在一个文件里可以生成,现在用面向对象编程分开了,就生成失败了

自己顶一下,就没有个明白人吗

3.2final 使用r9d。3.3final采用r10c。

NDK9-10各个版本都试过了,不过不知道自己的cocos2dx是不是finally版的 :3:

其他的工具版本会不会有影响呀,比如说android的SDK

换成3.3finally+NDK r10c 报错(程序可以运行,新建的cocos项目生成不报错)大神求救呀:6:
F:\softwork\Cocos2dxWork\Bear\proj.android>python build_native.py
We will remove this script next version,you should use cocos console to build an
droid project.

The Selected NDK toolchain version was 4.8 !
make.exe: Entering directory `F:/softwork/Cocos2dxWork/Bear/proj.android’
Gdbserver : libs/armeabi/gdbserver
Gdbsetup : libs/armeabi/gdb.setup
Compile++ thumb: cocos2dcpp_shared <= HelloWorldScene.cpp
Compile++ thumb: cocostudio_static <= CCTween.cpp
Compile++ thumb: cocostudio_static <= CCDatas.cpp
Compile++ thumb: cocostudio_static <= CCBatchNode.cpp

cc1plus.exe: out of memory allocating 3355443200 bytes
make.exe: *** [obj/local/armeabi/objs-debug/cocos2dcpp_shared///Classes/Hell
oWorldScene.o] Error 1
make.exe: *** Waiting for unfinished jobs…
make.exe: Leaving directory `F:/softwork/Cocos2dxWork/Bear/proj.android’
Traceback (most recent call last):
File “build_native.py”, line 149, in
build(opts.ndk_build_param,opts.android_platform,opts.build_mode)
File “build_native.py”, line 134, in build
do_build(cocos_root, ndk_root, app_android_root,ndk_build_param,sdk_root,and
roid_platform,build_mode)
File “build_native.py”, line 70, in do_build
raise Exception(“Build dynamic library for project " + app_android_root +
" ] fails!”)
Exception: Build dynamic library for project F:\softwork\Cocos2dxWork\Bear\pro
j.android ] fails!

不再支持build_native.py。请直接使用cocos compile or cocos run。

F:\softwork\Cocos2dxWork\Bear>cocos compile -p android
Running command: compile
Building mode: debug
Android platform not specified, searching a default one…
running: ‘“F:\tools\adt-bundle-windows-x86_64-20140624\sdk\tools\android” update
project -t android-20 -p F:\softwork\Cocos2dxWork\Bear\proj.android’

Updated project.properties
Updated local.properties
Updated file F:\softwork\Cocos2dxWork\Bear\proj.android\proguard-project.txt
Android platform not specified, searching a default one…
running: ‘“F:\tools\adt-bundle-windows-x86_64-20140624\sdk\tools\android” update
lib-project -p F:\softwork\Cocos2dxWork\Bear\proj.android…/cocos2d/cocos/plat
form/android/java -t android-20’

Updated project.properties
Updated local.properties
Updated file F:\softwork\Cocos2dxWork\Bear\proj.android…\cocos2d\cocos\platfor
m\android\java\proguard-project.txt
building native
NDK build mode: debug
NDK_TOOLCHAIN_VERSION: 4.8
running: ‘F:\tools\android-ndk-r10c\ndk-build -C F:\softwork\Cocos2dxWork\Bear\p
roj.android -j4 NDK_MODULE_PATH=F:\softwork\Cocos2dxWork\Bear\proj.android…/co
cos2d;F:\softwork\Cocos2dxWork\Bear\proj.android…/cocos2d/cocos;F:\softwork\Co
cos2dxWork\Bear\proj.android…/cocos2d/external NDK_TOOLCHAIN_VERSION=4.8 NDK_D
EBUG=1’

Android NDK: WARNING: APP_PLATFORM android-19 is larger than android:minSdkVersi
on 9 in ./AndroidManifest.xml
make.exe: Entering directory F:/softwork/Cocos2dxWork/Bear/proj.android' Compile++ thumb: cocos2dcpp_shared <= HelloWorldScene.cpp StaticLibrary : libcocos2d.a StaticLibrary : libcocostudio.a StaticLibrary : libcocosbuilder.a StaticLibrary : libcocos3d.a StaticLibrary : libspine.a StaticLibrary : libnetwork.a StaticLibrary : libaudioengine.a StaticLibrary : libui.a StaticLibrary : libcocosdenshion.a StaticLibrary : flatbuffers.a StaticLibrary : libextension.a StaticLibrary : libcocos2dxinternal.a StaticLibrary : libbox2d.a StaticLibrary : libcocos2dandroid.a StaticLibrary : libcpufeatures.a Gdbserver : libs/armeabi/gdbserver Gdbsetup : libs/armeabi/gdb.setup SharedLibrary : libcocos2dcpp.so jni/../../Classes/HelloWorldScene.cpp:170: error: undefined reference to 'Bear:: Bear()' jni/../../Classes/HelloWorldScene.cpp:172: error: undefined reference to 'Bear:: SetRegion(cocos2d::Vec2 const&, cocos2d::Vec2 const&)' collect2.exe: error: ld returned 1 exit status make.exe: *** Error 1 make.exe: Leaving directory F:/softwork/Cocos2dxWork/Bear/proj.android’
Ndk build failed!
F:\softwork\Cocos2dxWork\Bear>

cocos compile or cocos run的报错,
在vs2012上可以运行,连个warning都没有,
1>------ 已启动生成: 项目: libcocos2d, 配置: Debug Win32 ------
1> 复制了 1 个文件
1> 复制了 1 个文件
1> 复制了 2 个文件
1> 复制了 1 个文件
1> 复制了 1 个文件
1> 复制了 2 个文件
1> 复制了 1 个文件
1> 复制了 2 个文件
1> 复制了 2 个文件
1> 复制了 2 个文件
1> 复制了 2 个文件
1> 复制了 2 个文件
1> 复制了 2 个文件
1> 复制了 6 个文件
1> 复制了 2 个文件
1> 复制了 1 个文件
1> libcocos2d.vcxproj -> F:\softwork\Cocos2dxWork\Bear\proj.win32\Debug.win32\libcocos2d.dll
2>------ 已启动生成: 项目: Bear, 配置: Debug Win32 ------
2> HelloWorldScene.cpp
2> 复制了 2 个文件
2> Bear.vcxproj -> F:\softwork\Cocos2dxWork\Bear\proj.win32\Debug.win32\Bear.exe
========== 生成: 成功 2 个,失败 0 个,最新 2 个,跳过 0 个 ==========
求版主给个复杂成功个例子源码:5:

jni/…/…/Classes/HelloWorldScene.cpp:170: error: undefined reference to ‘Bear::
Bear()’
jni/…/…/Classes/HelloWorldScene.cpp:172: error: undefined reference to ‘Bear::
SetRegion(cocos2d::Vec2 const&, cocos2d::Vec2 const&)’

这是出错误啊=。=

看下这两个函数的声明定义有没有问题。

或者直接贴出代码。

Role.h
#ifndef Role
#define Role
#include “cocos2d.h”
USING_NS_CC;
class Role:public cocos2d::Layer
{
public:
Role();
virtual~Role()=0;
virtual void AddBlood(int Goods)=0;
virtual void SubBlood(int Hurt)=0;
virtual int GetBlood()=0;
protected:
Sprite* Entity;
Sprite* AttackEffect;
int Blood;
bool IsAttack;
bool LeftOrRight;//向右 false ; 向左 true
Vec2 Current_Position;
int Distance;
private:

};

#endif
Bear.h
#ifndef BEAR
#define BEAR
#include “Role.h”
class Bear :public Role{
public:
bool init();
CREATE_FUNC(Bear);
Bear();
~Bear();
void HandAttack();
void FootAttack();
void MoveUp();
void MoveDown();
void MoveLeft();
void MoveRight();

void HandAttackEnd();
void FootAttackEnd();
void MoveUpEnd();
void MoveDownEnd();
void MoveLeftEnd();
void MoveRightEnd();
void SetRegion(const Point& Begin,const Point& End);

void AddBlood(int Goods);
void SubBlood(int Hurt);
int GetBlood();

private:
void SetDistance();
int CurrentState;
bool IsAttack;
Point Moveable_Begin;
Point Moveable_End;
};
#endif

HelloWorld.h
#ifndef HELLOWORLD_SCENE_H
#define HELLOWORLD_SCENE_H

#include “cocos2d.h”
#include “Bear.h”
#include “Enemy.h”
USING_NS_CC;
class HelloWorld : public cocos2d::Layer
{
public:
// there’s no ‘id’ in cpp, so we recommend returning the class instance pointer
static cocos2d::Scene* createScene();

// Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init();     
// implement the "static create()" method manually
CREATE_FUNC(HelloWorld);
~HelloWorld();

private:
// a selector callback
void menuCloseCallback(cocos2d::Ref* pSender);

bool onTouchBegan(Touch* touch, Event* event);
void onTouchMoved(Touch* touch, Event* event);
void onTouchEnded(Touch* touch, Event* event);
Bear* BearSprite;
Sprite* HandBeatButton;
Sprite* FootBeatButton;
Sprite* UpButton;
Sprite* DownButton;
Sprite* LeftButton;
Sprite* RightButton;
std::vector<Role*>* AliveRole;//活着的角色
void update(float dt) override;
bool IsAttack;
Point Moveable_Begin;
Point Moveable_End;
int CurrentState;
int ZOrder;

};

HelloWorld.cpp
BearSprite=Bear::create();
BearSprite->SetRegion(Moveable_Begin,Moveable_End);
this->addChild(BearSprite,ZOrder);

把3个cpp+h附件打包传上来

Android.mk 中没有加入Bear.cpp 这个文件路径吧

怒赞!!:2:请问大神如何添加?

工程classes文件夹打包

已上传:14:

11楼应该正解了。

LOCAL_SRC_FILES +=

加你自定义文件。

:7: 感谢版主辛勤陪伴,让我在众多冷漠的论坛中感到了丝丝的温暖