2012-04-10 7 views
7

Ceci est mon fichier java pour lequel je voulais générer un fichier d'en-tête en utilisant javah pour une application android opencv.inclusion non résolue dans l'en-tête java dans JNI

package com.hosa; 

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

Le fichier d'en-tête généré est comme ci-dessous. L'éclipse signale que l'inclusion de jni.h dans le fichier d'en-tête n'est pas résolue. quelles sont les mesures à prendre pour résoudre cela ????

salutations, Srijith

+3

Je ne suis pas familier avec eclipse, mais le répertoire '$ JRE_HOME/include' doit être dans la liste des répertoires include. – hmjd

Répondre

26

J'ai des problèmes avec cela aussi ainsi pour toute personne qui trébuche sur cette ...

Je résolu la question de JNI éclipse - vous avez peut-être déjà fait étape 1 ou quelque chose de similaire

  1. fichier -> Nouveau -> Autre-> C++> Convertir en C++ projet

  2. Cliquez sur Proj RIght ect Head -> Propriétés -> C++ Général -> Chemins et symboles

  3. Ajouter un chemin semblable à celui sous GNU et GNUC++ langue Entrées

    /NDK/Plateformes/Android-9/arc-bras/usr/comprennent

    votre chemin sera différent en fonction de la façon dont vous êtes la configuration, le numéro de la plate-forme, etc.

    Une fois fait ensuite reconstruire les index quand il vous demande

  4. Fermez votre projet, ouvrir de nouveau, alors c -Construction maigre (ou il peut se produire immédiatement)

Dans mon cas, le jni.h a ensuite été trouvé, mais les JNIEnv etc. étaient encore méconnus, même si elles sont dans le fichier jni.h.

Notez également pour toute personne ayant ce problème, il vous arrêtera pas de construire, il vous suffit de fermer les fichiers incriminés, puis ouvrez et fermez votre projet pour se débarrasser des erreurs (quelle douleur)

MISE À JOUR: FIXÉ!

Dans l'édition au-dessus de Indigo procédez comme suit dans le menu/dialogue

Fenêtre-> Préférences-> C/C++ -> Index cochez la case "Index en-têtes non utilisés" réindexation/build si nécessaire

Vous pourriez aussi avoir besoin d'ajouter "/NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3/include" au dessus de l'inclusion que j'ai mentionné ci-dessus pour les entrées de langue.

Tous les symboles sont maintenant reconnus - J'espère que cela aidera quelqu'un à me rendre fou.

+0

Mac, Luna, ne fonctionne pas ... –

+0

Fenêtre-> Préférences-> C/C++ -> Index vérifier le "index inutilisés en-têtes" réindex/build si nécessaire .. A travaillé pour moi. –

-3

Dans mon cas, je fermais et ouvrez le projet, le les erreurs ont disparu.

1

FIXE!

Ajouter à Application.mk:
APP_STL := gnustl_shared

Aller à Properties -> C/C++ General -> Preprocessor Include-> Entries -> Add -> Include Directory -> File System Path, et sélectionnez le chemin du comprend comme:

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

!!! Cochez la case "Contains system headers" pour chaque chemin inclus. !!!

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

Nettoyez et reconstruisez votre projet.

+0

Fonctionne sur Mac avec Luna. –

Questions connexes