2012-04-10 13 views
7

में जावा हेडर में अनसुलझे समावेशन यह मेरी जावा फ़ाइल है जिसके लिए मैं एक एंड्रॉइड ओपनसीवी एप्लिकेशन के लिए जावा का उपयोग करके हेडर फ़ाइल जेनरेट करना चाहता था।जेएनआई

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 

ग्रहण यह इंगित कर रहा है कि हेडर फ़ाइल में jni.h शामिल करना अनसुलझा है। इसे हल करने के लिए क्या कदम उठाए जाएंगे ????

संबंध है, srijith

+3

मैं ग्रहण से अपरिचित हूं, लेकिन '$ JRE_HOME/include' निर्देशिका निर्देशिकाओं की सूची में होना आवश्यक है। – hmjd

उत्तर

26

मैं इस के साथ मुद्दों कर रहा हूँ के रूप में अच्छी तरह से तो किसी को भी है कि इस पर ठोकर के लिए ...

मैं ग्रहण से JNI समस्या हल हो जाती - आप पहले से ही किया है हो सकता है चरण 1 या कुछ इसी तरह

  1. फ़ाइल -> नई -> Other-> सी ++> सी ++ प्रोजेक्ट में कनवर्ट

  2. सही Proj पर क्लिक करें ect हेड -> गुण -> सी ++ जनरल -> पथ और प्रतीकों

  3. जीएनयू और GNUC++ भाषा प्रविष्टियां के तहत एक पथ इस के समान जोड़े

    /NDK/प्लेटफार्म/एंड्रॉयड-9/कट्टर हाथ/usr/शामिल

    आपका पथ अलग कैसे आप सेटअप कर रहे हैं, पर आधारित होगी जो मंच नंबर आदि

    एक बार किया तो अनुक्रमित के पुनर्निर्माण जब यह आप

  4. संकेत देता है अपनी परियोजना को बंद करें, फिर से खुल यह, फिर सी दुबला-निर्माण (या इसे तुरंत हो सकता है)

मेरे मामले में 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

मैक, लुना, काम नहीं करता ... –

+0

विंडो-> प्राथमिकताएं-> सी/सी ++ -> इंडेक्स "इंडेक्स अप्रयुक्त हेडर" रीइन्डेक्स/यदि आवश्यक हो तो बिल्ड करें .. मेरे लिए काम किया। –

0

मुझे एंड्रॉइड जेएनआई के साथ एक ही समस्या थी। मैंने एंड्रॉइड जेनी के पथ को शामिल करने के लिए प्रोजेक्ट को इंगित करके इसे ठीक किया।,

Android Add Native support - unresolved jni.h, android/log.h etc

-3

मेरे मामले में, मैं सिर्फ बंद कर दिया और प्रोजेक्ट खोलने तो: NDK स्रोत में ज कैसे यहाँ से NDK डाउनलोड करने के लिए देखें: https://developer.android.com/tools/sdk/ndk/index.html

विवरण ठीक यहाँ है के बारे में त्रुटियां गायब हो गईं।

1

तय! Properties -> C/C++ General -> Preprocessor Include-> Entries -> Add -> Include Directory -> File System Path को
APP_STL := gnustl_shared

जाओ, और पथ चयन की तरह भी शामिल है:


Application.mk में जोड़े

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

लुना के साथ मैक पर काम करता है। –

संबंधित मुद्दे