使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS)

cocos2dx-3.17.2 ---- xcode 14.0.1 项目移植 cocos2dx 3.17.2 移植 Xcode14.0.1 阅读详情

前提条件:

先看此文:http://blog.youkuaiyun.com/tt5267621/article/details/8941084(首先ecplise已经可以编译cocos2d-x再看此文)

  • 你已经下载coccos2d-x和NDK,并且会使用build_native.sh和eclipse编译cocos2d-x项目

安装NDK Plugin

英文好的同学可以直接查看官方说明Using the NDK plugin,这里我简单翻译一下

  1. 打开eclipse,在菜单里选择Help->Install New Software…
  2. 弹出的窗口里第一个框”Work with:“后面输入https://dl-ssl.google.com/android/eclipse/
  3. 稍等一会,下面会出来”Developer Tools”和”NDK Plugins”,全部选中,Next,同意协议,等安装完成后,重启eclipse
  4. eclipse重启后,到Eclipse->Preferences->Android->NDK,在这里设置你的NDK目录,比如我的,我设置到/android/android-ndk-r8e
  5. 安装完成

导入cocos2d-x目录下的示例游戏

这里我以cocos2d-2.1rc0-x-2.1.3/samples/Cpp/SimpleGame这个自带的小游戏为例子来说明一下.

假设你的eclipse是干净的,也就是左边的Package Explorer栏是空空的

  1. 导入libcocos2d-x到eclipse,右击Package Explorer空白区域,Import->Existing Android Code Into Workspace,然后在下一个窗口的Root Directory那里定位到cocos2d-2.1rc0-x-2.1.3/cocos2dx/platform/android/java这个目录,选中libcocos2dx,导入
  2. 按照上面的方法导入cocos2d-2.1rc0-x-2.1.3/samples/Cpp/SimpleGame/proj.android
  3. 现在eclipse里已经有了两个项目:libcocos2dx,SimpleGame

设置使用ndk-build来编译


因为我们不使用build-native.sh来编译,所以要先把资源文件得到在android项目的assets下,具体就是把cocos2d-2.1rc0-x-2.1.3/samples/Cpp/SimpleGame/Resources下面的所有文件复制到cocos2d-2.1rc0-x-2.1.3/samples/Cpp/SimpleGame/proj.android/assets下面去


准备工作完毕

  1. 在eclipse的Package Explorer里右击SimpleGame项目,选”Properties”,打开项目属性框
  2. 按下面设置Tool Chain Editor 
  3. 再设置ndk-build的命令,为 ndk-build NDK_DEBUG=1,确定,关闭对话框 
  4. 这个时候,你选择Project->Build All,会出现错误,意思是NDK_MODULE_PATH设置不对 
  5. 这里我们不设置NDK_MODULE_PATH,因为设置了它会让我们无法调试C++代码,解决上面问题的办法是:把编译过程中需要的库拷贝到系统默认的NDK_MODULE_PATH里,跟我来做
  6. 复制cocos2d-2.1rc0-x-2.1.3目录下的cocos2dx,CocosDenshion,extensions,external这4个目录到你的NDK的sources目录下,以我的电脑为例,就是/android/android-ndk-r8e/sources
  7. 复制cocos2d-2.1rc0-x-2.1.3/cocos2dx/platform/third_party/android/prebuilt目录的所有到NDK的sources目录下
  8. 这样我们复制到NDK的sources目录下的目录一共有cocos2dx,CocosDenshion,extensions,external, libcurl,libjpeg,libpng,libtiff,libwebp这几个
  9. 回到eclipse,再次Project->Build All,应该会编译成功

修改项目文件结构,以使cdt可以识别我们的C++文件

为了可以给C++下断点,我们必须修改一下当前的项目文件结构

  1. 移动cocos2d-2.1rc0-x-2.1.3/samples/Cpp/SimpleGame/Classes目录到cocos2d-2.1rc0-x-2.1.3/samples/Cpp/SimpleGame/proj.android/jni下面
  2. 修改cocos2d-2.1rc0-x-2.1.3/samples/Cpp/SimpleGame/proj.android/jni下面的Android.mk,把原来的

Android.mk中:

LOCAL_SRC_FILES := hellocpp/main.cpp \
            ../../Classes/AppDelegate.cpp \
           ../../Classes/HelloWorldScene.cpp \
            ../../Classes/GameOverScene.cpp                       
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes 

修改为

LOCAL_SRC_FILES := hellocpp/main.cpp \
               Classes/AppDelegate.cpp \
               Classes/HelloWorldScene.cpp \
                Classes/GameOverScene.cpp

LOCAL_C_INCLUDES := $(LOCAL_PATH)/Classes    

也就是使文件指向正确的位置

Project->Build ALL 编译项目,应该可以成功编译

调试

  1. 我们给Classes目录下的HelloWorldScene.cpp文件里的ccTouchesEnd方法下一个断点,这样游戏运行后,点击屏幕应该可以触发我们的断点 
  2. 把手机连接到电脑上,右击SimpleGame, 选 Debug As->Android Native Application
  3. 如果需要选择手机,选你想调试的
  4. 游戏运行起来后,触摸屏幕,可以看到

eclipse自动切换到了Debug界面,而且成功的断点下来了,并且变量可以在右边窗口查看 Debug界面上的按钮就不再多说了,就是继续执行,单步执行什么的几个,摸索一下便知

Enjoy!

[原创文章,转载请注明]




PS: 上述操作中我们复制了cocos2dx的好多文件到NDK的目录下面去,显的有点繁琐,这样做的目录是为了避开去设置NDK_MODULE_PATH,如果一旦设置了NDK_MODULE_PATH,就会使的调试不可行,可能有更好的方法,如果你知道,或者有什么问题都可以直接在文章下面留言

Android(eclipse)+cocos2d-x安装及项目环境整合 环境搭建的顺序是这样 1.JDK&JRE 2.Eclipse 3.CDT 4.ADT 5.ADK 6.NDK 立即下载

相关推荐

从GWAS到单细胞:利用seismic包精准定位疾病相关的关键细胞亚群与驱动基因

本文详细介绍了如何利用seismic包将GWAS与单细胞测序数据结合,精准定位疾病相关的核心细胞亚群与驱动基因。通过创新的统计算法和实战案例,帮助研究者从遗传汇总数据中挖掘关键生物学机制,提升疾病研究的精准度和效率。

weixin_29215815的博客 441

cocos2dx配置Android环境最新教程

cocos2dx配置Android环境最新教程 这几天在研究cocos2mdx怎么在Android studio下配置环境,一开始根据官网的过期教程走了不少歪路,虽然现在网上也有大致正确的安装教程,但是一些细节还是被忽略了,现在特意记录一下安装的经过 首先在官网下载Cocos2dx 3.17.2版本 Cocos引擎下载连接 然后下载Android studio的4.2c1版本,连接:https://redirector.gvt1.com/edgedl/android/studio/install/4.2.0

时间溜走了的博客 1225

西门子AI面试问答(STAR法则回答实例)

通过建立良好的沟通渠道、倡导透明和积极的沟通,并建立信任和共享目标的文化,我成功地改善了团队合作的氛围和效果。对于一些存在分歧和冲突的情况,我采用了积极的解决问题的态度,促进双方的沟通和理解,寻找共同的利益点和解决方案。我的成果得到了评委和观众的认可,并为我的学术发展和进一步的科学研究奠定了基础。首先,我主动与团队成员进行一对一的沟通,倾听他们的观点和意见,了解他们在合作中遇到的问题和需求。我还参加了学校组织的科学俱乐部和研究小组,与其他热衷科学的同学一起进行讨论和实验,加深我的理解和实践技能。

kashine的博客 7249

Windows平台CocosStudioV3.10安装配置(使用Cocos2d-xV3.17.2进行开发)

Windows平台CocosStudioV3.10安装配置(使用Cocos2d-xV3.17.2进行开发)   由于安装CocosStudioV3.10会将Cocos2d-xV3.10同步安装,但是我们使用Cocos2d-xV3.17.2版本,只需要使用CocosStudio创建场景导出CSB文件即可导入Cocos2d-xV3.17.2中使用。 CocosStudioV3.10下载链接如下:https://audioandvideo.ufgnix0802.cn/resources/CocosForWi

田螺姑娘的博客 5675

从零到一:AnythingLLM与Ollama的本地知识库搭建实战

本文详细介绍了如何使用AnythingLLM与Ollama从零开始搭建本地知识库,涵盖技术选型、环境部署、系统配置及优化策略。通过RAG技术架构,实现安全高效的文档管理与智能问答,特别适合企业及个人构建私有化知识管理系统。

weixin_29079643的博客 562

【图文步骤】EC-Engineer部分操作详细步骤

EC-Engineer部分功能详细使用手册

weixin_42212468的博客 6164

android cocos2d_debug,教你Cocos2D-JS的断点调试方法(安卓真机调试)

估计很多初学Cocos2D-JS者在程序出现问题的时候不知道如何去调试,接下来本教程将教大家Cocos2D-JS的断点调试方法。一、使用浏览器chrome打开程序,进行调试。跟普通js程序一样。要么自行搭建服务器,利用Python脚本,或者用其他服务器程序(LAMP或XAMPP)。然后用浏览器打开服务器地址。要么直接使用cocos提供好的命令行:cocosrun–pweb浏览器调试好处是,方便,对...

weixin_33345697的博客 886

SAP-ABAP:SAP的BAPI_GOODSMVT_CREATE 深度解析

BAPI_GOODSMVT_CREATE 深度解析** **功能定位**:SAP 标准接口,支持 **11 种库存移动场景**(收货/发货/转储/生产投料等),是 MM 模块集成核心

baidu_35680696的博客 1823

[Cocos2dx实战]3.17.2版本开发,(1)HelloWorld[开箱可用]

1.Cocos官网 https://www.cocos.com 2.准备环境: python 2.7 https://www.python.org/downloads/ cocos-2dx 3.17 https://www.cocos.com/cocos2dx vs2017 https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-relnotes 3.第一个cocos项目: 开始创建游戏的命令:..

学生董格 622

YOLO26改进策略【多YAML融合】| UNetV2 + BiFormer + WIoU

Wise-IoU是一种基于IoU的损失函数,旨在解决目标检测中边界框回归损失函数在处理低质量训练数据时的问题。

Limiiiing的博客 218

117、HDR多帧融合算法:曝光序列、运动鬼影消除与合成权重的高效实现

HDR多帧融合算法实战经验总结 本文分享了HDR多帧融合算法在实际应用中的关键技术和优化经验。主要内容包括: 曝光序列设计:强调动态调整曝光时间比、帧间间隔和拍摄顺序的重要性,特别指出短-中-长的拍摄顺序优势。 运动鬼影消除:比较了三种运动检测方法,推荐梯度域检测方案,并强调在RAW域进行检测的必要性。 合成权重设计:提出基于高斯型权重函数的多因素考量方法,包括基础权重、运动权重和噪声权重的综合处理策略。 高效实现方案:提供NEON指令集加速的具体代码示例,包括梯度计算、权重查表和融合处理等关键步骤。 实用

zzfmlxs的博客 63

使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS XCode)

前提条件: 先看此文:http://blog.youkuaiyun.com/tt5267621/article/details/8941084(首先ecplise已经可以编译cocos2d-x再看此文) 你已经下载coccos2d-x和NDK,并且会使用build_native.sh和eclipse编译cocos2d-x项目 安装NDK Plugin 英文好的同学可以直接查看官方说

Cooki的技术博客 1104

【华为OD机试】真题-小明减肥(Java)

摘要:题目要求从n个可选运动中选取k个,使其卡路里总和等于目标值t,统计可行方案数。输入包含运动数量n、目标t、选择数量k及卡路里数组。采用DFS回溯算法,通过剪枝优化(提前终止无效分支),分别处理选择/不选当前运动的情况。当遍历完所有运动且满足条件时计数。示例输入"4 3 2"和"1 2 3"时,输出2(对应两种选择组合)。Java实现通过递归完成搜索,最终输出符合条件的方案总数。(149字)

u014481728的博客 280

使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS) (转)

转自:http://blog.youkuaiyun.com/tt5267621/article/details/8940768 前提条件: 先看此文:http://blog.youkuaiyun.com/tt5267621/article/details/8941084(首先ecplise已经可以编译cocos2d-x再看此文) 你已经下载coccos2d-x和NDK,并且会使用build_nati

hhy018的专栏 732

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

cocos2d-2.0-rc2-x-2.0.1 windows环境配置

【cocos2d-x入门实战】环境配置、交叉编译及安卓项目的生成 原创作品,转载请标明:http://blog.youkuaiyun.com/jackystudio/article/details/11516435 1.配置cocos2d-x & Android开发环境 我想如果有意搞这个东东的,应该不用什么图文并茂了吧,稍微看一下就明白了。 1.1.安装VS2008 这是微

linking530的专栏 1043

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Cocos2d-x学习笔记(3:将VS2010下cocos2d-x 2.0.2 win32工程移植到android环境)

因为本人以前使用WiEngine引擎,所以文章跳跃幅度比较大。 问题:在WIN7下使用VS2010使用调试通过一个COCOS2D-X项目后如何移植到ANDROID环境并进而打包安装到真机(或者模拟器)上呢? STEP 1:配置android工程生成器 用edit plus之类的编辑器打开cocos2d-x目录下的create-android-project.bat,并进行修改。

linking530的专栏 754

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Android(eclipse)+cocos2d-x安装及项目环境整合(12年10月测试可行)

cocos2d-x无CYWIN安卓环境搭建及项目整合 本文继承自这一篇博文:http://www.cnblogs.com/ybgame/archive/2012/06/07/2540693.html 因为我照上面弄搞不定……所以又自己摸索一些后续解决方法成功搭建项目……测试过1.0和2.0的COCOS2D-X均可行 具体方法是先看父博客,然后卡在哪再看本文中的解决方法…… 初学

ppppl7的专栏 2266
上一篇: Cocos2d-x Scene生命周期 pushScene和replaceScene
下一篇: 让人死去活来的cocos2d-x安卓开发环境搭建(windows+eclipse+ndk)
TT5267621
博客等级 码龄15年 154粉丝 79原创
评论 16
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值