【问题标题】:Adding ndk support for c (not cpp)添加对 c(不是 cpp)的 ndk 支持
【发布时间】:2015-01-04 09:34:13
【问题描述】:

我是 Android NDK 的新手,我正在努力理解它。到目前为止,我发现 NDK/samples 文件夹中的每个示例都是用 C 编写的,而不是 C++。当我导入这些项目并处理它们时,一切正常。但是,当我在 Eclipse 中创建新项目,然后右键单击项目 -> Android 工具 -> 添加本机支持时,它总是会创建 libname.cpp 文件。自然地,c 代码在复制到 .cpp 文件后不会编译。

我还尝试在 Android.mk 文件的以下行中将 nativetest.cpp 替换为 nativetest.c

LOCAL_MODULE    := nativetest
LOCAL_SRC_FILES := nativetest.cpp

但它产生了这个错误:

 No rule to make target `jni/nativetest.c', needed by `obj/local/armeabi/objs/nativetest/nativetest.o'.  Stop.

我的问题是:如何添加对 .c 文件的原生支持?

【问题讨论】:

  • 您是只是更改了Android.mk 中的名称,还是还重命名了实际文件?
  • 好吧,我刚刚在 Eclipse 中尝试了你的场景:我创建了一个新的 Android 应用程序项目,选择添加本机支持,在 Eclipse 的文件资源管理器中突出显示生成的 .cpp 文件,按 F2 重命名并更改结尾从.cpp 到.c,最后也更改了以Android.mk 结尾的文件。之后项目构建得很好,C文件似乎已经编译成功。
  • 我的eclipse安装一定有问题。这样做并复制 hello-ini 代码会导致此问题:link。更重要的是,编译导入的 hello-jni 代码可以正常工作,但在打开 .c 文件后,eclipse 会显示与未解决的包含相关的错误。我会尽量关注this answer

标签: android c eclipse android-ndk


【解决方案1】:

在重新安装 ADT eclipse 包并浪费了几个小时寻找解决方案后,我通过将新的 .c 文件复制到项目结构(jni 文件夹)并更改位于的 LOCAL_MODULE LOCAL_SRC_FILES 的值来克服我的问题在 Android.mk 中

不幸的是,这种解决方法仍然存在here、here 和here 描述的问题

【讨论】:

  • 虽然您希望使其正常工作是可以理解的,但值得注意的是,不需要让 eclipse 了解您的本机代码。完全可以使用您最喜欢的编辑器或 IDE 进行开发,运行 ndk-build ,然后使用 eclipse 构建 java 级项目,如果它们位于正确的位置,则会自动获取本地库。
猜你喜欢
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-18
  • 1970-01-01
相关资源
最近更新 更多