ITKeyword,专注技术干货聚合推荐

注册 | 登录

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

u013174689 分享于 2014-01-25

推荐:cocos2d x 入门学习(一)实例制作简单的射击小游戏Star Fighter

我们将使用cocos2d-x制作一个简单的射击游戏。 本文所用的制作环境是cocos2d x 2.0.4,VS2010。 参考资料: 1、本文的原型其实是来自cocos2d-2.0-x-2.0.4官方下

2018阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

本帖交叉编译使用的代码使用的是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",为横屏显示。

 

推荐:【cocos2d-x入门实战】环境配置、交叉编译及安卓项目的生成

1.配置cocos2d-x & Android开发环境 我想如果有意搞这个东东的,应该不用什么图文并茂了吧,稍微看一下就明白了。 1.1.安装VS2008 这是微软开发的集成开发环境,

本帖交叉编译使用的代码使用的是Star Fighter项目, http://blog.csdn.net/u013174689/article/details/17997513 VC++编译器中可以通过的代码,交叉编译到安卓的时候,有一些会被报错。可能是两

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。