使用NDK r10构建Cocosd-x v3.2时编译和链接错误的解决办法
如果你使用NDK r10构建Cocos2d-x v3.2,将会遇到所有测试用例编译错误以及Lua测试用例链接错误。
1. 编译错误
错误信息是:
|
1
2
3
4
5
6
7
8
|
/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://cocos2d-x.org/news/307
使用NDK r10构建Cocosd-x v3.2时编译和链接错误的解决办法的更多相关文章
- Linux安装rpm包时报错Header V3 DSA/SHA1 Signature, key ID 1d1e034b: NOKEY解决办法
这是因为yum安装了旧版本的GPG key造成的,解决办法: rpm --import /etc/pki/rpm-gpg/RPM* Header V3 DSA/SHA1 Signature, key ...
- Eclipse+Maven构建web项目及部署时Maven lib依赖问题的解决
目录 Eclipse中m2e插件构建web项目的步骤 Maven工具构建web项目再导入Eclipse的步骤 [一].Eclipse中m2e插件构建web项目的步骤 第一步:创建项目,按照 New – ...
- jenkins构建maven项目:找不到本地依赖包的解决办法
前言: 我们在构建maven项目时,常常会用到一些特殊的jar包(不能在中央仓库中直接下载到本地仓库如微软不允许以maven的方式直接下载com.microsoft.sqlserver:sqljdbc ...
- java 用maven 构建项目时@Override错误的解决办法
把工程编译时使用JDK1.6以上版本可以解决. eclipse中 Preferences-->Java-->Compiler-->Configure Project Specific ...
- android studio使用CMake和NDK,实现应用自身被卸载时打开某一网址
实现应用自身被卸载时打开某一网址的c代码 MyActivity: public class MyActivity extends Activity { /** * Called when the ac ...
- jenkins持续集成源码管理选项为None,构建失败找不到git.exe解决办法
我的jenkins版本为Jenkins ver. 2.19.1 1.源码管理选项只有None的解决办法: 在插件管理中心,搜索对应的源码管理插件这里以git为例,搜索git plugin点击右下角的安 ...
- 安装rpm包时遇到Header V3 DSA signature: NOKEY时解决办法
安装rpm包,特别是没有GPGkey校验,原因是rpm版本过低导致的. 代码如下: warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY ...
- eclipse android ndk 提示Type 'JNIEnv' could not be resolved 等信息解决办法
新配置完eclipse c++ android ndk 环境后,导入项目提示以下信息 是由于没有将jni.h导入的缘故,而这个文件在ndk的目录下面.所以,参照以下步骤:Project Propert ...
- 最新版jQuery v3.3.1的BUG以及解决办法(什么问题不重要,怎么解决问题才重要)
发现问题 最新版的 FineUIPro v5.2.0 中,我们将内置的 jQuery v1.12.4 升级到 jQuery v3.3.1 ,可以看升级记录: +升级到jQuery v3.3.1. ...
随机推荐
- 初识 Bootstrap
Bootstrap 概述 Bootstrap 是一个前端框架,使用它可以快速开发响应式页面,还能专门针对 PC 端或移动端快速开发,大大提高了开发效率. Bootstrap 是最受欢迎的 HTML.C ...
- js 技巧 (五)
//设置光标位置 function getCaret(textbox) { var control = document.activeElement; textbox.focus(); var ran ...
- buf.indexOf()
buf.indexOf(value[, byteOffset][, encoding]) value {String} | {Buffer} | {Number} byteOffset {Number ...
- Spider-scrapy断点续爬
scrapy的每一个爬虫,暂停时可以记录暂停状态以及爬取了哪些url,重启时可以从暂停状态开始爬取过的URL不在爬取 实现暂停与重启记录状态 方法一: 1.首先cd进入到scrapy项目里(当然你也可 ...
- ZOJ 2567 Trade
Trade Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on ZJU. Original ID: 2567 ...
- Git Cheat Sheet 中文版
Git Cheat Sheet 中文版 索引 配置 配置文件 创建 本地修改 搜索 提交历史 分支与标签 更新与发布 合并与重置 撤销 Git Flow 配置 列出当前配置: $ git config ...
- 斯特林(Stirling)公式 求大数阶乘的位数
我们知道整数n的位数的计算方法为:log10(n)+1n!=10^m故n!的位数为 m = log10(n!)+1 lgN!=lg1+lg2+lg3+lg4+lg5+................. ...
- C++ fill 和memset
以下内容来自www.cplusplus.com--------------------------------------------------- FILL: template <class ...
- School Marks-CodeForces
B. School Marks time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- 联想M7400打印机加粉墨了还是显示没有粉墨
联想M7400打印机加粉墨了还是显示没有粉墨?想必有很多的办公人士发现这个难题吧.其实很简单的! 先说下打印机的原理,打印机粉墨一边用的时候系统也在计数,当我们打印机加好墨后但打印机是不知道已经加好 ...