【问题标题】:Type 'jint' could not be resolved, and JNIEnv, jclass无法解析类型“jint”,以及 JNIEnv、jclass
【发布时间】:2012-07-24 21:17:14
【问题描述】:

尝试使用 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个。 已经在谷歌和 Stack Overflow 上搜索了答案,但是一旦有人找到解决方案,他们就不会说那个解决方案是什么:(

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

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

【问题讨论】:

  • #include 使用 jint 和 JNIEnv 所需的唯一头文件是 jni.h。但是,您必须在 extern "C" 中使用它们。可能会发布您的代码的某些部分可以提供帮助
  • 如果代码是用 ndk-build 构建的,那么你的问题就出在 eclipse 上。在菜单中的某个地方,它需要指向 ndk 包含,或者只是禁用 ndk 插件,所以它不在乎。
  • 我无法弄清楚如何粘贴代码块而不像纯文本一样出现。可以说这是一个非常简单的自动生成的头文件,用于将两个数字相乘的函数。 @chris 我应该在哪里禁用 ndk 插件?

标签: java android eclipse android-ndk


【解决方案1】:

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

转到C/C++ 常规->路径和符号

Includes->GNU C 中添加与此等效的内容:

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

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

【讨论】:

  • 这在 EclipseMars,android-ndk-r10e 中也解决了。谢谢! :)
  • 可能正试图在 Android Studio 中执行这些步骤。这是一个古老的日食问题!
【解决方案2】:

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

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

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

【讨论】:

  • 我认为 Eclipse (Kepler)、ADT 和 CDT 中的自动索引存在各种各样的问题。我尝试了很多,但这解决了我的问题,因为我们的大部分代码是 C 而不是 CPP。
【解决方案3】:

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

<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。更多信息可以阅读this

【讨论】:

  • 您可以在 Navigator 视图中看到 .project 文件并在 Eclipse 的项目文件编辑器中对其进行编辑。
  • 有同样的问题,这个答案解决了它。首先,我认为 OpenCV 以某种方式导致了这些问题,但 eclipes 是原因。谢谢你,这样可以节省时间!
  • 谢谢!好久不见,忘记更新了。我重新导入了该项目并应用了该修复程序,然后它就起作用了。
猜你喜欢
  • 1970-01-01
  • 2017-04-04
  • 2015-10-22
  • 2018-05-20
  • 2013-12-14
  • 1970-01-01
  • 2017-07-19
  • 2016-09-24
  • 2014-11-07
相关资源
最近更新 更多