17

尝试使用 jni c 代码构建一个简单的 helloWorld android/java 应用程序。我在 Windows 7 上使用 Eclipse Indigo。在非空格路径中安装了 ndk r8,最终使用 ndk-build.cmd 构建了 c 库。但是javah生成的头文件有未解决的错误,

  • 类型“jint”无法解析
  • 无法解析类型“JNIEnv”
  • 类型“jclass”无法解析

昨天没有看到 jni.h 包含,但是今天早上重新启动后,该错误消失了。我也有一个未解决的 JNIEXPORT 和 JNICALL 错误,但#defining 它们似乎已经解决了这个问题。卡在上面的最后3个。已经在 google 和 Stack Overflow 上搜索了答案,但是一旦有人找到解决方案,他们就不会说那个解决方案是什么:(

我已经在项目属性中检查了包含在 java 和 c/c++ 透视图中的内容。它似乎包括我想要的 jni.h 目录,我将 android-14 用于 arm 平台。目标是 4.0.3 IceCream Sanwich(令人困惑的是 API 15?!)。我打算尝试使用 AVD 进行测试。我试过关闭/重新打开项目,从 Eclipse 中删除并重新导入,但这些都没有奏效。

我错过了一些包括吗?我应该在哪里设置它们?非常感谢一些帮助。

4

3 回答 3

19

右键单击项目并转到属性属性。

转到C/C++ General->Paths and Symbols

Includes->GNU C中添加等效项:

%ndkroot%\platforms\android-8\arch-arm\usr\include

您可能想指向其他平台版本的 NDK,只需更改路径的 android-8 部分即可。

于 2013-08-05T12:37:44.920 回答
17

最近我遇到了同样的问题。就我而言,问题是我将 Eclipse 项目转换为 C++ 项目,但我使用了 C 类型。所以为了解决这个问题,我只是从项目目录的文件中删除了这一<nature>org.eclipse.cdt.core.ccnature</nature>.project

<natures>
 <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
 <nature>org.eclipse.jdt.core.javanature</nature>
 <nature>org.eclipse.cdt.core.cnature</nature>
 <nature>org.eclipse.cdt.core.ccnature</nature>
 <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
 <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
 <nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
</natures>

然后重新启动 Eclipse。有关更多信息,您可以阅读内容。

于 2012-09-24T15:50:42.107 回答
7

尝试在指令#undef __cplusplus之前添加一个,如下所示:#include

#undef __cplusplus
#include <string.h>
#include <jni.h>

这将迫使 Eclipse 考虑non-c++NDK 对象的定义。

于 2012-08-25T12:52:07.627 回答