cocos2dx移植eclipse后,用ndk来开发,实现放弃vs,eclipse写c++代码

1.声明:本博文的阅读人群适用于成功在eclipse里编译运行过cocos2dx项目的人员

2.我所用的游戏引擎是cocos2dx2.2.2版本

3.ndk的版本是android-ndk-r8d

4.我把我的cocos2dx项目移植到eclipse,打开我在vs中写好的类,发现有的类中有以下的情况,这实际不算是问题,只是我导入的项目中

找不到一些东西,你把本类关掉,运行程序发现出错,但是项目上显示并没有错,这时你把工程关掉,重新编译是可以用的

5.写到这里,有人可能会问,既然已经提供了上面的解决方法,不就好了吗,但是你不觉得,那样会很累吗,稍微修改一点东西都要关掉工程,重新再来,

关键点是报这样错误,会让你怀疑你填入代码的真确性,下面我来介绍一种方法,就是抛弃掉cocos2dx项目自带的cocos2dx,Classes等文件夹,用ndk直接编译,这样还能调试

6.把你的Classes文件夹复制到jni文件夹下,并修改Android.mk文件

修改成这样的原因很简单,大家仔细查看下目录结构会发现Android.mk里面的目录结构是以jni为根目录的,原来的Classes是在jni目录的前俩级目录的,现在你的目录结构改变了,里面的配置信息当然要变了

7.当然修改到这里离我们的目标还是很远的,下面右击你项目,选择properties,选择c/c++ Build修改如下

这一步的目的是为了debug

8.展开c/c++ Build选择Tool Chain Editor,配置信息如下

请注意关键点 这个下拉框里面是有No Toolchain选项的,恭喜你你是幸运的,因为还可能有下面情况的

发现了吗 No Toolchain选项是没有的,这个就是悲剧的一种情况了,也是博主遇到的,也是让我下定决心写这篇博客的原因,当遇到上图的情况,你整个项目就废了,不管你怎么修改(可能是我不了解)不能编译成功项目了,项目报错如下:

9.这个错误,按我的理解就是关键的命令找不到,出现了编译的问题,这个问题博主是这样解决的:

a.先提一下,大家可能重来没有关注过你项目下proj.android文件夹下的.cproject文件吧,这个文件实际上是项目的一个配置文件,当我们项目配置做出修改h后,信息就保存在这个文件里,No Toolchain选项没有的问题就出现在这里,配置文件里没有,那么我就附上一篇正确的配置文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">

<storageModule moduleId="org.eclipse.cdt.core.settings">

<cconfiguration id="com.android.toolchain.gcc.2083618597">

<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.android.toolchain.gcc.2083618597" moduleId="org.eclipse.cdt.core.settings" name="Default">

<externalSettings/>

<extensions>

<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>

<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>

<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

</extensions>

</storageModule>

<storageModule moduleId="cdtBuildSystem" version="4.0.0">

<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.android.toolchain.gcc.2083618597" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">

<folderInfo id="com.android.toolchain.gcc.2083618597.1746542775" name="/" resourcePath="">

<toolChain id="com.android.toolchain.gcc.207752166" name="com.android.toolchain.gcc" superClass="com.android.toolchain.gcc">

<targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="com.android.targetPlatform.1333423178" isAbstract="false" superClass="com.android.targetPlatform"/>

<builder arguments="ndk_debug=1" buildPath="${ProjDirPath}" command="ndk-build" id="com.android.builder.1306964325" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Android Builder" superClass="com.android.builder">

<outputEntries>

<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="obj"/>

<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="libs"/>

</outputEntries>

</builder>

<tool id="com.android.gcc.compiler.647000292" name="Android GCC Compiler" superClass="com.android.gcc.compiler">

<inputType id="com.android.gcc.inputType.1035220464" superClass="com.android.gcc.inputType"/>

</tool>

</toolChain>

</folderInfo>

<sourceEntries>

<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="jni"/>

</sourceEntries>

</configuration>

</storageModule>

<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>

</cconfiguration>

</storageModule>

<storageModule moduleId="cdtBuildSystem" version="4.0.0">

<project id="legend214.null.671703336" name="legend214"/>

</storageModule>

<storageModule moduleId="org.eclipse.cdt.core.pathentry"/>

<storageModule moduleId="refreshScope" versionNumber="1">

<resource resourceType="PROJECT" workspacePath="/COCOSBUDIER"/>

</storageModule>

<storageModule moduleId="scannerConfiguration">

<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>

<scannerConfigBuildInfo instanceId="com.android.toolchain.gcc.2083618597;com.android.toolchain.gcc.2083618597.1746542775;com.android.gcc.compiler.647000292;com.android.gcc.inputType.1035220464">

<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.android.AndroidPerProjectProfile"/>

</scannerConfigBuildInfo>

<scannerConfigBuildInfo instanceId="0.756827735;0.756827735.;com.android.gcc.compiler.1510055343;com.android.gcc.inputType.974093260">

<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.android.AndroidPerProjectProfile"/>

</scannerConfigBuildInfo>

</storageModule>

<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>

</cproject>

替换掉以后,更新项目,再次查看,发现No Toolchain选项出现了,恭喜你离成功已经很近了,编译项目,还是发生错误

意思是NDK_MODULE_PATH设置不对

  1. 这里我们不设置NDK_MODULE_PATH,因为设置了它会让我们无法调试C++代码,解决上面问题的办法是:把编译过程中需要的库拷贝到系统默认的NDK_MODULE_PATH里,跟我来做
  2. 复制cocos2d-2.1rc0-x-2.1.3目录下的cocos2dx,CocosDenshion,extensions,external这4个目录到你的NDK的sources目录下,以我的电脑为例,就是/android/android-ndk-r8e/sources
  3. 复制cocos2d-2.1rc0-x-2.1.3/cocos2dx/platform/third_party/android/prebuilt目录的所有到NDK的sources目录下
  4. 这样我们复制到NDK的sources目录下的目录一共有cocos2dx,CocosDenshion,extensions,external,
    libcurl,libjpeg,libpng,libtiff,libwebp
    这几个
  5. 回到eclipse,再次Project->Build All,应该会编译成功

这里我引用了http://blog.csdn.net/tt5267621/article/details/8940768的方法

现在我们再次编译应该就会成功了。

ps:如果大家有什么好的建议请随时与我交流,希望这篇博文能让大家获益,还有就是如果大家在这个过程遇到什么问题,请及时留言,我会以最快速度回复大家

时间: 2024-08-24 17:53:18

cocos2dx移植eclipse后,用ndk来开发,实现放弃vs,eclipse写c++代码的相关文章

让你提前认识软件开发(40):既要写好代码,又要写好文档

第3部分 软件研发工作总结 既要写好代码,又要写好文档 对于软件相关行业,在学校或单位上,大家也许都已经注意到了,除了要编写的程序.绘制设计图之外,还有一个重要的工作便是写文档.为什么要写文档呢?因为我们要把自己做的东西展示出来,不光展示给同行看,可能还要展示给其他岗位上的工作人员看,甚至展示给用户看.如果我们只是会写程序,不会在文档中描述自己的想法,那么就真正的成为"码农"了. 工作也有一段时间了,我发现周围的同事,会写高质量文档的确实很少.李开复老师在<浪潮之巅>的序言

Hadoop项目开发环境搭建(Eclipse\MyEclipse + Maven)

写在前面的话 可详细参考,一定得去看 HBase 开发环境搭建(Eclipse\MyEclipse + Maven) Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Maven) Hive项目开发环境搭建(Eclipse\MyEclipse + Maven) MapReduce 开发环境搭建(Eclipse\MyEclipse + Maven) 我这里,相信,能看此博客的朋友,想必是有一定基础的了.我前期写了大量的基础性博文.可以去补下基础. 步骤一:File  ->

Ubuntu 12.04 32位 eclipse android SDK NDK开发环境搭建

文章写作时间: 2017/04/05 一.软件包如下: 1.jdk 1.8(JAVA 开发及运行坏境) 2.eclipse(IDE工具) 3.ADT23.0(eclipse 开发安卓插件) 4.SDK24 (Android 开发环境) 5.NDK R10 (NDK开发环境) 下载链接 http://pan.baidu.com/s/1nvjYfnr 二.安装步骤 1.JDK安装 a.在/home/"用户名" 下新建文件夹"Java_JDK"(mkdir /home/&

VS 2012 + NDK + ADT 开发(Cocos2d-x 3.1开发)PART 2

VS 2012 + NDK + ADT 开发(Cocos2d-x 3.1开发)PART 2 在上一章里,我们介绍了如何搭建Cocos2d-x开发环境,并创建一个Cocos2d-x工程:在本章里,我将介绍如何将工程编译成可以在Android平台运行的程序: 1. 我们找到工程目录下的Andorid平台工程所在 我这里是: E:\Work\HelloCC\proj.android 将这个目录地址复制 2. 启动命令提示符 CMD命令 并切换到此目录下 并 运行 build_native.py 开始编

VS 2012 + NDK + ADT 开发(Cocos2d-x 3.1开发)PART 1

VS 2012 + NDK + ADT 开发(Cocos2d-x 3.1rc0开发 )PART 1 在上一章里,我们介绍了VS2012+NDK+ADT+CGYWIN的环境部署,在这一章里,我们将会利用已搭建的环境来示范NDK的开发过程:为了同时介绍一下Cocos2d-x,这里将以Cocos2d-x作为范例开发~ 环境部署: VS2012 + NDK + ADT + CGYWIN Cocos2d-x 3.1 Python 2.7 1.下载Cocos2d-x 下载地址:http://www.coco

Android SDK+Eclipse+ADT+CDT+NDK 开发环境在windows 7下的搭建

这几天一直在研究 Android SDK C/C++平台的搭建,尽管以前有成功在Windows XP做过,由于当时没有留下有用的记录,花了很多的冤枉时间,今天写出来以备后用.由于Android SDK和Eclipse都是用Java编写的,因此需要先在Windows 7上安装JDK,才能进行后续操作,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 选择相应的版本下载安装. 平台的搭建可以分为两大步: 一

使用eclipse 进行Android ndk开发(javah进行头文件生成)

android 程序基于java写之后,正式发布之后很容易被反编译,因此需要一种方式去对代码或者敏感数据进行保护(例如通讯密钥等),ndk是一种很好的解决方案. ndk可以生成较难进行反编译的二进制库(.so)文件. 首先需要进行ndk的环境搭建,eclipse的搭建很简单,首先eclipse中增加android的插件,其需要下载一个ndk的包,然后在eclipse的设置中,Android项中的ndk的路劲进行设置: 如图: 随后就可以开始进行NDK的开发了,随后通过一个例子来进行ndk的开发.

用eclipse 玩转cocos 2dx开发

开始研究cocos2dx,mark一下这个的配置步骤 1 下载eclipse      2 下载android sdk,配置sdk路径,添加环境变量 3 安装adt 4 下载android ndk,配置ndk路径 5 下载cocos2dx 开发包 注意 ndk8+ 不需要cygwin,可以省去N多下载的时间 下面以HelloCpp 为例 A 导入地址  D:\soft\cocos2d-x-2.1.5\samples\Cpp\HelloCpp\proj.androidsoft\cocos2d-x-

NDK官方开发指南翻译之 NDK_GDB

这几天看JNI,没有基础,那真是难受--把看到的相关资料记录一下,也分享给初学者. 'ndk-gdb' Overview 重要:如果你要调试线程相关的程序,请阅读下面的'Thread Support'部分. 1.用法: ------------- Android r4引入了一个叫着'ndk-gdb'的脚本,能够非常简单的为NDK生成的机器码启动一个debugsession. 这个脚本位于NDK的顶层目录下,它必须从你应用程序的目录或者子目录下,用命令行的方式来调用.例如: cd $PROJECT