如果你使用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 declaration
ssize_t BundleReader::tell()
  ^
/Users/minggo/SourceCode/cocos2d-x/build/../cocos/./3d/CCBundleReader.h:90:14: note: 
  previous declaration is here
long 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时编译和链接错误的解决办法的更多相关文章

  1. 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 ...

  2. Eclipse+Maven构建web项目及部署时Maven lib依赖问题的解决

    目录 Eclipse中m2e插件构建web项目的步骤 Maven工具构建web项目再导入Eclipse的步骤 [一].Eclipse中m2e插件构建web项目的步骤 第一步:创建项目,按照 New – ...

  3. jenkins构建maven项目:找不到本地依赖包的解决办法

    前言: 我们在构建maven项目时,常常会用到一些特殊的jar包(不能在中央仓库中直接下载到本地仓库如微软不允许以maven的方式直接下载com.microsoft.sqlserver:sqljdbc ...

  4. java 用maven 构建项目时@Override错误的解决办法

    把工程编译时使用JDK1.6以上版本可以解决. eclipse中 Preferences-->Java-->Compiler-->Configure Project Specific ...

  5. android studio使用CMake和NDK,实现应用自身被卸载时打开某一网址

    实现应用自身被卸载时打开某一网址的c代码 MyActivity: public class MyActivity extends Activity { /** * Called when the ac ...

  6. jenkins持续集成源码管理选项为None,构建失败找不到git.exe解决办法

    我的jenkins版本为Jenkins ver. 2.19.1 1.源码管理选项只有None的解决办法: 在插件管理中心,搜索对应的源码管理插件这里以git为例,搜索git plugin点击右下角的安 ...

  7. 安装rpm包时遇到Header V3 DSA signature: NOKEY时解决办法

    安装rpm包,特别是没有GPGkey校验,原因是rpm版本过低导致的. 代码如下: warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY ...

  8. eclipse android ndk 提示Type 'JNIEnv' could not be resolved 等信息解决办法

    新配置完eclipse c++ android ndk 环境后,导入项目提示以下信息 是由于没有将jni.h导入的缘故,而这个文件在ndk的目录下面.所以,参照以下步骤:Project Propert ...

  9. 最新版jQuery v3.3.1的BUG以及解决办法(什么问题不重要,怎么解决问题才重要)

    发现问题 最新版的 FineUIPro v5.2.0 中,我们将内置的 jQuery v1.12.4 升级到 jQuery v3.3.1 ,可以看升级记录: +升级到jQuery v3.3.1.    ...

随机推荐

  1. 杭电 2111 Saving HDU (贪心)

    Description 话说上回讲到海东集团面临内外交困,公司的元老也只剩下XHD夫妇二人了.显然,作为多年拼搏的商人,XHD不会坐以待毙的.   一天,当他正在苦思冥想解困良策的时候,突然想到了自己 ...

  2. DHU Club Festival(数学)

    链接: http://acm.dhu.edu.cn/problem/view.html?problemId=5272 题意: 给定n瓶不同浓度的液体, 每次可以挑选x(x>=2)瓶混合, 求最后 ...

  3. Spring核心技术(七)——Spring容器的扩展

    本文将讨论如何关于在Spring生命周期中扩展Spring中的Bean功能. 容器的扩展 通常来说,开发者不需要通过继承ApplicationContext来实现自己的子类扩展功能.但是Spring ...

  4. BNUOJ 5235 Starship Troopers

    Starship Troopers Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on HDU. Origi ...

  5. Leetcode 150.逆波兰表达式求值

    逆波兰表达式求值 根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总 ...

  6. 九度oj 题目1056:最大公约数

    题目1056:最大公约数 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:8068 解决:5317 题目描述: 输入两个正整数,求其最大公约数. 输入: 测试数据有多组,每组输入两个正整数. ...

  7. <<编程之美>> -- 队列中取最大值操作的问题

    不得不说编程之美是一本好书,虽然很多题目在做acm中的过程中遇到过,不过还是有很多值得思考的地方 这是今天在编程之美上看到的一个问题,对于栈转化成队列的一个思考 平时都太过依赖c++内函数库中的栈和队 ...

  8. HDU 4035 期望dp

    这道题站在每个位置上都会有三种状态 死亡回到起点:k[i] 找到出口结束 e[i] 原地不动 p[i] k[i]+e[i]+p[i] =1; 因为只给了n-1条路把所有都连接在一起,那么我们可以自然的 ...

  9. 被老板逼着实现了Excle的透视表分析算法

    package com.example.demo; import java.sql.SQLException;import java.util.ArrayList;import java.util.H ...

  10. rsync远程文件传输

    [root@rhel5 ~]# rsync -a log.tar.gz root@192.168.124.129:/tmp root@192.168.124.129's password: Permi ...