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设置不对
这里我们不设置NDK_MODulE_PATH,因为设置了它会让我们无法调试C++代码,解决上面问题的办法是:把编译过程中需要的库拷贝到系统默认的NDK_MODulE_PATH里,跟我来做 复制cocos2d-2.1rc0-x-2.1.3目录下的
cocos2dx,CocosDenshion,extensions,external
这4个目录到你的NDK的sources目录下,以我的电脑为例,就是/androID/androID-ndk-r8e/sources 复制cocos2d-2.1rc0-x-2.1.3/cocos2dx/platform/third_party/androID/prebuilt目录的所有到NDK的sources目录下 这样我们复制到NDK的sources目录下的目录一共有 总结 以上是内存溢出为你收集整理的cocos2dx移植eclipse后,用ndk来开发,实现放弃vs,eclipse写c++代码全部内容,希望文章能够帮你解决cocos2dx移植eclipse后,用ndk来开发,实现放弃vs,eclipse写c++代码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)