使用NDK r10构建Cocosd-x v3.2时编译和链接错误的解决办法
2014-10-15 16:14
316 查看
如果你使用NDK r10构建Cocos2d-x v3.2,将会遇到所有测试用例编译错误以及Lua测试用例链接错误。
1. 编译错误
错误信息是:
编译错误在这里修复,对此我们很抱歉。
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
1. 编译错误
错误信息是:
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时编译和链接错误的解决办法
- QT4的FindDialog例子在VC6中编译时提示链接错误的一种直观的解决办法(包含过程思路)
- 关于NDK动态链接库中调用动态链接库一种错误的解决办法
- 在 VS 中编译项目时出现 error LNK2005 链接错误的解决办法
- 编译使用 libmp4v2库 libmp4v2.lib(atom_tkhd.obj) : error LNK2001: 无法解析的外部符号 _gettimeofday 错误解决办法.
- VC6工程迁移到VC2008 SP1中,使用MFC 9.0静态链接后运行错误的解决办法
- mac上使用g++编译出错“Undefined symbols for architecture x86_64:” 错误解决办法
- Mac下使用Eclipse编译C/C++文件出现 launch failed, binary not found 错误的解决办法
- vc6.0使用PathFileExists(...)函数的时候链接错误的解决办法
- Ubuntu编译链接错误:cannot find -lz解决办法
- 使用AndroidStudio编译NDK的方法及错误解决方式
- 程序Debuge版本编译通过,Release版本出现链接错误,解决办法
- 使用sqoop 1.4.4从mysql向hdfs导入表出现链接数据库失败错误的解决办法
- 常见编译/链接错误及其解决办法
- 常见编译/链接错误及其解决办法
- NDK编译:error: iostream: No such file or directory错误解决办法
- 常见编译/链接错误及其解决办法
- 使用ffmpeg库编译错误及解决办法
- 使用ffmpeg库编译错误及解决办法
- 在项目中使用libcurl,解决编译链接错误