类型'jint'无法解析,JNIEnv,jclass

Gat*_*ica 16 java eclipse android android-ndk

尝试使用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 for arm平台.目标是4.0.3 IceCream Sanwich(令人困惑的是API 15 ?!).我打算尝试使用AVD进行测试.我已经尝试关闭/重新打开项目,从Eclipse中删除并重新导入,但这些都没有奏效.

我错过了一些包括?我应该在哪些地方设置它们?非常感谢一些帮助.

wes*_*ton 19

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

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

Includes-> GNU C中添加相当于:

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

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


Yur*_*ury 16

最近我遇到了同样的问题.在我的情况下,问题是我将我的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>
Run Code Online (Sandbox Code Playgroud)

然后重启Eclipse.有关更多信息,请阅读此内容.


Msc*_*scG 7

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

#undef __cplusplus
#include <string.h>
#include <jni.h>
Run Code Online (Sandbox Code Playgroud)

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