【问题标题】:how to import and edit C++ code in eclipse using ndk?如何使用ndk在eclipse中导入和编辑C++代码?
【发布时间】:2012-03-22 13:04:47
【问题描述】:

场景: 我已经使用 eclipse 和 NDK(安装了 CDT 和 Sequoyah)在 android 模拟器上运行并编译了 cocos2d-x 的现有 c++ 代码(在 eclipse 之外编辑的 c++ 代码)。但是,无法在运行时编辑 c++ 代码或调试。

如果我打开一个 c++ (main.cpp) 文件,项目就会被错误污染。 main.cpp 是一个包含 java 和 c++ 代码的文件。并且已经包含在我的项目中。 (关闭项目再重新打开暂时解决错误)

问题是:

1) 如何在一个正在运行的 android 项目中打开现有的 c++ 文件?

2) 如何告诉 eclipse 它是 c++ 和 java 的混合代码/项目。而不是错误

谢谢。

【问题讨论】:

标签: java c++ eclipse android-ndk cocos2d-x


【解决方案1】:

为了告诉eclipse它是一个混合项目,在C++的角度,去new->Convert to C/C++ project。这是一个用词不当,它使它成为一个混合项目。

为了让它找到包含的文件,请转到项目首选项->C++ Generel->Paths and Symbols。在那里,您可以(单独)添加 C/C++ 的包含文件夹。您需要的文件夹是

{Android NDK install dir}/sources/cxx-stl/{the stl that you're using if you're using it}/include

{Android NDK install dir}/platforms/Android[yourAPIlevel]/arch-arm/usr/include/android.

顺便说一句。我正在关注这个过程的一些教程,他们还建议转到 C/C++ 构建,并执行以下操作:

  • 取消选中“使用默认构建命令”
  • 将构建命令更改为 ndk-build(我们会回来讨论)
  • 从“Build(Incremental Build)”旁边的文本字段中删除“all”
  • 取消选中干净

这样,您也可以从 Eclipse 构建。这真的很好,因为这样你也可以简单地按“运行”,它会编译 C++ 代码,将 .dll(或 .so)放在正确的位置,安装并运行。不过一个小细节。我认为这是使用较新版本的 android-ndk,您必须在 android-ndk 安装根目录中说 make APP=yourappname。因此,eclipse 中的 ndk-build 不起作用。为了在正确的位置触发 make,您可以简单地使用 make -C PATHTOYOURNDKINSTALLATION APP=yourappname 作为 eclipse 中的构建命令。

【讨论】:

  • 嗨,谢谢回复。我已经这样做了,但是。它仍然有错误
  • 您选择转换正确的项目,对吗?如果它仍然这样说,请检查 C/C++ 常规下的索引器设置。顺便说一句,在我的回答中我说 {Android NDK install dir} 但你应该替换它,这不是 eclipse 的特殊语法。最后,如果您在 Windows 上,您可能想要更改斜线的方向。最后,尽量不要在您的 C/C++ 文件路径中留有空间。
  • @enobayram:在 Eclipse 中编程时,您是否获得了代码辅助?即假设你想输入 cocos2d::CCSprite * _ship;。编写 coc 并按 Ctrl + Space 后,您是否获得了代码帮助?我没有得到这个特性我曾经在用 Java 编程时拥有这个特性。可能是什么问题?以上步骤我都用过了。
  • @25061987 是的,我明白了。当您在 Eclipse 中处理常规 C++(基于 CDT)项目时,如果您的设置没有问题,您将获得开箱即用的代码辅助。那是因为 eclipse 知道你使用的库和头文件。然而,在 NDK 中,构建是在外部处理的,因此您需要告诉 eclipse 要索引哪些头文件。在 project preferences->C++ Generel->Paths and Symbols 尝试告诉 eclipse 在哪里可以找到您的库的头文件(在本例中为 Cocos2d)。那么你应该得到内容帮助。祝你好运
  • @enobayram:我已经按照所有步骤制作了一个 Java 和 C++ 组合项目。在 C++ Build 中,我提供了 Build Command 作为 bash ${workspace_loc:/MyTestProject}/build_native.sh NDK_DEBUG=1 V=1。在 Paths and Symbols 中,我在 Includes 部分下添加了 Includes。我还在 Source Location 部分下包含了我的类文件夹的路径。我已经在 Google 上搜索了很多关于这个问题的信息,因为如果 Content assitence 没有工作,那么学习组合编程真的很困难,你知道我们按 Ctrl + Space 获得的帮助都失去了它也不会自动检查错误。
【解决方案2】:

大多数解决方案由 enobayram 提供,但是在 eclipse 中编程时,我无法获得诸如 @25061987 评论之类的内容帮助。

我认为这不是获得帮助的好方法,尽管它运作良好。

  1. 转到项目首选项->C++ Generel->路径和符号->源位置
  2. 选择链接文件夹
  3. 链接到文件系统中的文件夹。
  4. 添加“你的COCOS2DX_ROOT”的“cocos2dx, cocosdenshion”文件夹

或者试试这个方法 http://jpsarda.tumblr.com/post/26000816688/integrate-cocos2d-x-c-into-an-android-application 他复制了所有来源...

【讨论】:

    猜你喜欢
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 2015-08-30
    • 2017-05-26
    • 2015-02-21
    • 2018-08-09
    相关资源
    最近更新 更多