2012-04-10 49 views
7

这是我的java文件,我想用javah为android opencv应用程序生成头文件。未解决的包含在JNI的java头文件中

package com.hosa; 

public class edgejava{ 
static{ 
    System.loadLibrary("edgejava"); 
} 
public native int main(``); 
} 

生成的头文件如下。

/* DO NOT EDIT THIS FILE - it is machine generated */ 
#include <jni.h> 
/* Header for class com_hosa_edgejava */ 

#ifndef _Included_com_hosa_edgejava 
#define _Included_com_hosa_edgejava 
#ifdef __cplusplus 
extern "C" { 
#endif 
/* 
* Class:  com_hosa_edgejava 
* Method: main 
* Signature:()I 
*/ 
JNIEXPORT jint JNICALL Java_com_hosa_edgejava_main 
(JNIEnv *, jobject); 

#ifdef __cplusplus 
} 
#endif 
#endif 

eclipse指出包含jni.h头文件是未解决的。 要解决这个问题的步骤是什么?

问候, srijith

+3

我对eclipse不熟悉,但'$ JRE_HOME/include'目录需要位于include目录列表中。 – hmjd 2012-04-10 11:35:15

回答

26

我有也这样的人,在这个蹒跚这个问题...

我解决了这个问题JNI从日食 - 你可能已经完成了第1步或类似

  1. 文件的东西 - >新建 - >其他 - > C++>转换为C++项目

  2. 右击PROJ ECT头 - >属性 - > C++常规 - >路径和符号

  3. 添加在GNU和GNUC++语言的条目类似这样的路径

    /NDK /平台/ Android的9 /弓臂的/ usr /包括

    你的路径将是不同取决于你如何设置,该平台号码等

    一旦完成,然后重建索引时,它会提示你

  4. 关闭项目,重新打开它,然后c贫版本(也可能立即发生)

在我的情况那么JNI.h被发现,但JNIEnv的等仍然无法识别的,即使他们是在JNI.h文件。

另请注意有这个问题的人,它不会从建筑阻止你,你只需要关闭有问题的文件,然后打开和关闭项目摆脱错误的(什么是痛苦)

更新:固定!

在版到上面靛蓝做从菜单/对话框下面

窗口 - >首选项 - > C/C++ - >索引勾选“指数未使用的头”重新索引/建如有必要

您可能还需要在我提到的包含之上添加“/NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3/include”上面的语言条目。

现在所有符号都被识别 - 希望这可以帮助那些让我疯狂的人。

+0

Mac,Luna,不起作用... – 2014-12-09 13:41:41

+0

窗口 - >首选项 - > C/C++ - >索引检查“索引未使用的头文件”重新索引/如有必要生成..为我工作。 – 2015-04-09 12:59:53

-3

在我而言,我只是关闭和打开项目,则错误消失。

1

固定!

添加到Application.mk
APP_STL := gnustl_shared

转到Properties -> C/C++ General -> Preprocessor Include-> Entries -> Add -> Include Directory -> File System Path,并选择路径的包括像:

${NDK_ROOT}\platforms\android-21\arch-arm\usr\include 
${NDK_ROOT}\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a\include 
${NDK_ROOT}\sources\cxx-stl\gnu-libstdc++\4.8\include 
${NDK_ROOT}\toolchains\arm-linux-androideabi-4.8\prebuilt\darwin-x86_64\lib\gcc\arm-linux-androideabi\4.8\include 

检查每个包含路径的"Contains system headers"复选框。 !!!

转至Properties -> C/C++ General -> Preprocessor Include-> Providers -> Check CDT GCC Built-in Compiler Settings -> OK

清理并重建您的项目。

+0

在Mac上与卢娜合作。 – 2014-12-09 14:20:36