2012-04-10 52 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