2012-04-10 14 views
7

Este es mi archivo java para el que quería generar un archivo de encabezado usando javah para una aplicación android opencv.inclusión no resuelta en el encabezado java en JNI

package com.hosa; 

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

El archivo de encabezado generado es como a continuación.

/* 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 

el eclipse indica que la inclusión de jni.h en el archivo de encabezado no está resuelta. ¿Cuáles son los pasos a seguir para resolver esto ????

cordiales, Srijith

+3

No estoy familiarizado con eclipse, pero el directorio '$ JRE_HOME/include' debe estar en la lista de directorios de inclusión. – hmjd

Respuesta

26

Estoy teniendo problemas con esto, así que para cualquier persona que tropieza en este ...

He resuelto el problema de la JNI Eclipse - puede que ya han hecho el paso 1 o algo similar

  1. archivo -> Nuevo -> Otros-> C++> Convertir en C++ Proyecto

  2. clic derecho sobre Proj ect Cabeza -> Propiedades -> C++ Generales -> Rutas y símbolos

  3. añadir una ruta similar a esto bajo GNU y GNUC++ Lenguaje entradas

    /NDK/Plataformas/Android-9/arch-brazo/usr/incluyen

    su camino será diferente depende de cómo son de configuración, que la plataforma número etc.

    Una vez hecho entonces reconstruir los índices cuando se le pide

  4. Cierre su proyecto, volver a abrirlo, entonces c magra y construcción (o puede ocurrir inmediatamente)

En mi caso, entonces el jni.h se encontró pero el JNIEnv etc. estaban todavía no reconocido a pesar de que están en el archivo jni.h.

También tenga en cuenta para cualquier persona que tenga este problema no lo puedo le impida la construcción, sólo tiene que cerrar los archivos involucrados, a continuación, abra y cierre su proyecto para deshacerse de los errores (lo que es un dolor)

ACTUALIZACIÓN: ¡FIJO!

En la edición de lo anterior, en Indigo hacer lo siguiente desde el menú/diálogo

Ventana-> Preferencias-> C/C++ -> Índice de comprobar el "índice de encabezados no utilizados" reindex/construcción si es necesario

Es posible que también tenga que agregar "/NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3/include" encima del incluir que mencioné arriba a las entradas de idioma.

Ahora se reconocen todos los símbolos. Espero que esto ayude a alguien a volverme loco.

+0

Mac, Luna, no funciona ... –

+0

Ventana-> Preferencias-> C/C++ -> Index comprueba el "Index Unused Headers" reindex/build si es necesario .. Funcionó para mí. –

-3

En mi caso, acabo de cierre y de apertura del proyecto, entonces el los errores desaparecieron

1

¡CORREGIDO!

Añadir a Application.mk:
APP_STL := gnustl_shared

Ir a Properties -> C/C++ General -> Preprocessor Include-> Entries -> Add -> Include Directory -> File System Path, y seleccione la ruta de la incluye como:

${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 

!!! Marque "Contains system headers" casilla de verificación para cada ruta incluida. !!!

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

Limpiar y reconstruir su proyecto.

+0

Funciona en Mac con Luna. –

Cuestiones relacionadas