cocos2d x 入门学习(二)Star Fighter项目交叉编译时遇到的问题

本帖交叉编译使用的代码使用的是Star Fighter项目, http://blog.csdn.net/u013174689/article/details/17997513

VC++编译器中可以通过的代码,交叉编译到安卓的时候,有一些会被报错。可能是两者的C++编译器中有一些方面的要求不同。

把build_native.sh 文件拖动到cygwin软件中回车编译。出现了错误如下

报错1:

Compile++ thumb  : game_shared <= main.cpp
In file included from jni/hellocpp/main.cpp:6:
jni/../../Classes/HelloWorldScene.h:32: error: extra qualification 'HelloWorld::' on member 'update'
/cygdrive/e/android-ndk-r7/build/core/build-binary.mk:241: recipe for target 'obj/local/armeabi/objs-debug/game_shared/hellocpp/main.o' failed
make: *** [obj/local/armeabi/objs-debug/game_shared/hellocpp/main.o] Error 1
make: Leaving directory '/cygdrive/e/cocos2d-2.0-x-2.0.4/cocos2d-2.0-x-2.0.4/StarFighter01/proj.android'

解决方法:

HelloWorldScene.h第32行,删除多余的'HelloWorld::'

多余的限定在VC++中被认可允许了,这里不允许,需要删除。

再次把build_native.sh 文件拖动到cygwin软件中回车编译。再次报错。

 

报错2:

In file included from jni/../../Classes/HelloWorldScene.cpp:2:
jni/../../Classes/GameOverLayer.h:2:85: error: e:\cocos2d-2.0-x-2.0.4\cocos2dx\layers_scenes_transitions_nodes\cclayer.h: No such file or directory
jni/../../Classes/HelloWorldScene.cpp: In member function 'virtual void HelloWorld::update(float)':
jni/../../Classes/HelloWorldScene.cpp:274: warning: 'static bool cocos2d::CCRect::CCRectIntersectsRect(const cocos2d::CCRect&, const cocos2d::CCRect&)' is deprecated (declared at E:/cocos2d-2.0-x-2.0.4/cocos2d-2.0-x-2.0.4/StarFighter01/proj.android/../../cocos2dx/cocoa/CCGeometry.h:108)
/cygdrive/e/android-ndk-r7/build/core/build-binary.mk:241: recipe for target 'obj/local/armeabi/objs-debug/game_shared/__/__/Classes/HelloWorldScene.o' failed
make: *** [obj/local/armeabi/objs-debug/game_shared/__/__/Classes/HelloWorldScene.o] Error 1
make: Leaving directory '/cygdrive/e/cocos2d-2.0-x-2.0.4/cocos2d-2.0-x-2.0.4/StarFighter01/proj.android'
错误解读:GameOverLayer.h:2:85: error: e:\cocos2d-2.0-x-2.0.4\cocos2dx\layers_scenes_transitions_nodes\cclayer.h: No such file or directory
这是因为我之前移动了文件夹cocos2d-2.0-x-2.0.4,导致错误。

解决方法:修改为正确路径e:\cocos2d-2.0-x-2.0.4\cocos2d-2.0-x-2.0.4\cocos2dx\layers_scenes_transitions_nodes\cclayer.h

修改完毕后,再次把build_native.sh 文件拖动到cygwin软件中回车,这次编译成功,看到so文件(libgame.so)了!

如果不了解cocos2d x交叉编译的朋友,这里是传送门http://blog.csdn.net/u013174689/article/details/18700217

 

设置竖屏

在eclipse里面导入刚刚生成的android项目后需要设置竖屏,因为Android默认是横屏的。

我们在AndroidManifest.xml中右键选择open with Android common XML Editor

找到activity中的android:screenOrientation,

然后将默认的landscape(横屏显示)改为portrait(竖屏显示)。

点击项目名字,右键run as android application,如果模拟器有异常不显示,没有关系。

把生成的apk文件复制到手机,安装后就可以真机玩自己的游戏了。

 

 

参考资料:Android横屏竖屏切换的问题 http://blog.sina.com.cn/s/blog_77c632410101790w.html

很多软件在开发过程中为了避免横竖屏切换时引发不必要的麻烦,通常禁止掉横竖屏的切换,

通过在AndroidManifest.xml中设置activity中的android:screenOrientation属性值来实现。

比如下列设置

android:screenOrientation="portrait"

则无论手机如何变动,拥有这个属性的activity都将是竖屏显示。

android:screenOrientation="landscape",为横屏显示。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值