cocos2dx 3.0打包android遇到的错误(持续更新)

本文分享了作者在使用Cocos2d-x进行跨平台开发过程中遇到的多个典型问题及其解决方案,包括文件包含错误、第三方库集成、C++11语法兼容性和GCC编译器警告等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.编译时遇到找不到文件的错误:比如fatal error: cocos-ext.h: No such file or directory    ,

fatal error: CocosGUI.h: No such file or directory等。

原因:1,可能android.mk中没有加入对应的cpp文件。2,在xcode下开发。能够直接#include "cocos-ext.h",由于xcode会自己主动匹配路径,但转到android下,就要加上对应的文件夹,所以要改成#include "ui/CocosGUI.h"  ,#include "extensions/cocos-ext.h"


2.project中用到了第三方库libpomelo。正确做法应该是放到cocos2d/external文件夹下,可是项目由于某种原因没有这么做。所以后面在编写android.mk文件时遇到了一些错误:

Cannot find module with tag 'libpomelo' in import path    

Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ? 

然后网上查找解决的方法,看到了一篇关于NDK_MODULE_PATH定义问题文章,最后我在项目android.mk文件的末尾加上

$(call import-add-path,/Users/jason/Desktop/1000dreams222/Road2God/libs)    #凝视:/Users/jason/Desktop/1000dreams222/Road2God/libs 为libpomelo的绝对路径

$(call import-module,libpomelo)这两句话,搞定。


3.遇到c++语法错误:

error: 'to_string' was not declared in this scope 或者 error: 'to_string' is not a member of 'std'

原因:android上编译不通过。貌似是c++11的bug

解决的方法:我写了一个模版函数,例如以下:

template <typename T>

std::string to_string_platform(T value)

{

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

    std::ostringstream os;

    os << value;

    return os.str();

#else

    return std::to_string(value);

#endif

};

在android上使用流操作,其它平台继续使用string的函数。


4.遇到错误:format not a string literal and no format arguments

原因:预计是gcc编译器比較严格。我的gcc编译器是4.2.1,而xcode默认编译器是LLVM 3.0。

解决的方法:在application.mk文件里增加以下一句:APP_CPPFLAGS += -Wno-error=format-security


5.今天看别人的代码遇到一个非常蛋疼的问题,纠结了我三个多小时。。。

(由于俺是c++菜鸟)

上代码:

auto arenabtn =Button::create();

    arenabtn->loadTextures("btn_arena_n.png","btn_arena_o.png",nullptr);

这两句代码看起来没问题吧。。只是在android上就是会崩!看下函数原型 

    void loadTextures(conststd::string& normal,const std::string& selected, conststd::string& disabled =""TextureResType texType = UI_TEX_TYPE_LOCAL);

看到了没,第三个參数是string类型。调用时赋值为nullptr,结果执行时就崩了。

所以不要用nullptr,NULL去初始化string类型


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值