使用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. ...
 
随机推荐
- (十二)python3 迭代器
			
可以直接作用于 for 循环的对象统称为可迭代对象: Iterable .一类是集合数据类型,如 list . tuple . dict . set . str 等,一类是 generator ,包括 ...
 - 83-MACD 移动平均汇总/分离指标.(2015.7.3)
			
MACD 移动平均汇总/分离指标 ~计算: · EMA(12,t)=EMA(12,t-1) * 11/13 + Close * 2/13 · EMA(26,t)=EMA(26,t-1) * 25/27 ...
 - vim 编辑器使用法则
			
vim 编辑器使用法则 Vi编辑器有3种使用模式:一般模式.编辑模式和命令模式. $SHELL:查看当前默认shell类型 $BASH_VERSION:查看当前shell版本 3.一般模式: 光标移 ...
 - 【IntelliJ 】设置 IntelliJ IDEA 主题和字体的方法
			
2 主题修改 2.1 界面主题修改 如上图所示,依次点击Files -> Settings,进入如下界面: 标注1:主题选择区: 标注2:Darcula.IntelliJ 和 Windows,三 ...
 - Linux下汇编语言学习笔记56 ---
			
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
 - webstrom设置代码缩进四个空格
			
言,今天在github上拉了一份代码,发现代码缩进是2个空格,不习惯.找到了解决方案. 一.File ---> Settings 搜索Code Style,取消勾选使用现文件的缩进方式,见下图. ...
 - Path Sum(参考别人,二叉树DFS)
			
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...
 - mysql实现oracle序列
			
mysql实现oracle序列的方案1.建表,表结构为:drop table if exists sequence; create table sequence ( seq_name VARCHAR( ...
 - [教程] NETGEAR R7800 路由器TFTP刷机方法(适用于.img格式固件各种刷)
			
本教程是我参照R7800的OP/LEDE固件交流群内文件做的教程,可以说是完善.补充吧. 本帖适用于:① 原厂固件刷原厂固件:② 原厂固件刷第三方固件(.img格式):③ 第三方固件刷回原厂固件(.i ...
 - POJ3977 Subset 折半枚举
			
题目大意是给定N个数的集合,从这个集合中找到一个非空子集,使得该子集元素和的绝对值最小.假设有多个答案,输出元素个数最少的那个. N最多为35,假设直接枚举显然是不行的. 可是假设我们将这些数分成两半 ...