使用NDK r10构建Cocosd-x v3.2时编译和链接错误的解决办法
来源:互联网 发布:大韩火花机怎么编程 编辑:程序博客网 时间:2024/06/05 00:30
如果你使用NDK r10构建Cocos2d-x v3.2,将会遇到所有测试用例编译错误以及Lua测试用例链接错误。
1. 编译错误
错误信息是:
/Users/minggo/SourceCode/cocos2d-x/build/../cocos/./3d/CCBundleReader.cpp:94:23: error: return type of out-of-line definition of 'cocos2d::BundleReader::tell' differs from that in the declarationssize_t BundleReader::tell() ^/Users/minggo/SourceCode/cocos2d-x/build/../cocos/./3d/CCBundleReader.h:90:14: note: previous declaration is herelong int tell();
编译错误在这里修复,对此我们很抱歉。
2. 链接错误
修复编译错误之后,当你创建Lua测试用例或者新的Lua工程时,你将遇到链接错误。
我已经在Android问题反馈系统中提交这个错误。NDK开发人员承认这是NDK r10的一个bug。以下提供两种解决办法:
1)使用命令行"-nodefaultlibs -lstdc++ -latomic -ldl -lm -lc -lcompiler_rt_static"将生成文件改为libgcc.a。
但是,因为我们使用独立的工具链,所以改变生成文件对Cocos2d-x是行不通的。
2)使用libc++_shared.so,然后在Application.mk中添加LIBCXX_USE_GABIXX:=true,强制使用gabi++重建libc++。
这个方法需要使用共享库,还需要修改Cocos2dxActivity.java来加载依赖的共享库。我们不希望做这样的修改,因为:
* 我们没有测试过共享库,所以我们也没有使用过共享库
* 使用共享库将比使用静态库生成的.apk大0.13M
* Google开发人员将在下一代NDK中修复这一问题
总结
我们建议您使用NDK r9d,不使用NDK r10。如果你使用NDK r10,如下步骤可以帮你解决上述两个问题:
1)声明BundleReader::tell()时,将long int改为ssize_t。查看更多详细信息请查看这个pr。
2)将APP_STL:=c++_static改为APP_STL:=c++_shared。在Application.mk中添加LIBCXX_USE_GABIXX:=true, 然后修改你的Java激活代码来加载libc++_shared.so。 查看更多详细信息请查看这个pr。
原网站:http://cn.cocos2d-x.org/tutorial/show?id=1187
- 使用NDK r10构建Cocosd-x v3.2时编译和链接错误的解决办法
- Compiling and linking error when using NDK r10 to build cocos2d-x v3.2
- Compiling and linking error when using NDK r10 to build cocos2d-x v3.2
- Compiling and linking error when using NDK r10 to build cocos2d-x v3.2
- cocosd-x教程4 CCTextFieldTTF的使用
- NDK 编译 SDL2_mixer-2.0.2 时将警告视为错误的解决办法
- cocos2d-x 2.x NDK链接错误
- 编译、链接和构建:
- 编译时出现的错误和解决办法
- 在eclipse上使用ndk r10
- 使用NDK(r7)编译时用到boost 遇到的错误。
- ndk链接时的诡异错误
- ndk链接时的诡异错误
- ndk链接时的诡异错误
- 使用NDK编译JNI时出现错误
- Android NDK工程的编译和链接以及使用gdb进行调试
- 关于NDK动态链接库中调用动态链接库一种错误的解决办法
- NDK动态链接库的编译和调用
- Cocos2d-X 3.0 游戏软件环境搭建与项目创建
- struts set 标签用法
- android客户端多线程下载案例(实现断点续传,包括客户端服务端,还有注释)
- Eclipse开发Android时报错Unable to execute dex: Multiple dex files define
- poj 3636 Dilworth定理(嵌套方形娃娃) Dilworth定理详细讲解
- 使用NDK r10构建Cocosd-x v3.2时编译和链接错误的解决办法
- iOS开发 ---- Swift基础语法。
- 设计模式——模板方法模式(TemplateMethod Pattern)
- IDA调试dex代码初体验
- 设计模式:桥接模式
- 如何再linux下安装uci (unified configguration interface)
- 求矩形的周长和面积【Java】
- Storm源码分析<转>
- myproject/gen already exists but is not a source folder. Convert to a source folder or rename it.