2012-08-29 53 views
1

在Android的NDK當我使用由助手工具生成javah它工作正常的頭文件來解決。但是當我創建一個普通的文件,擴展名爲.h和包括jni.h和任何其他需要的頭文件我不能夠使用的類型關鍵字,或從包含的頭文件中的所有功能,它總是讓我看到「類型‘無論’無法解決「,而我可以在機器生成的頭文件與javah工具沒有任何原因的同樣的事情。類型不能在NDK

雖然我已經包括手臂平臺庫在C/C++常規 - >路徑和符號 - >包括。它不斷向我顯示這個錯誤。

請考慮下面的一段代碼。

#include "store.h" 
#include <jni.h> 
#include <stdint.h> 
#include <pthread.h> 

#ifndef _STOREWATCHER_H_ 
#define _STOREWATCHER_H_ 

#define SLEEP_DURATION 5 
#define STATE_OK 0 
#define STATE_KO 1 
#ifdef __cplusplus 
    extern "C" { 
#endif 
    typedef struct{ 
     Store* mStore; 
     JavaVM* mJavaVM; 
     jobject mStoreFront; 
     pthread_t mThread; 
     int32_t mState; 
    }StoreWatcher; 
#ifdef __cplusplus 
} 
#endif 
#endif 

它讓我在這段代碼中StoreJavaVMjobjectpthread_t無法解析。請幫幫我。

任何形式的幫助將不勝感激。

+0

不知道如何,但我的問題是通過創建一個C文件並將此頭文件包含到此C文件中解決的。任何人都可以告訴我它是如何發生的,還是像我必須將這個頭文件包含在任何C文件中? – KunalK

+0

已發佈的代碼是'.h'文件,不是嗎? 你的問題是將它包含在'.cpp'文件中導致編譯錯誤? 你有沒有嘗試刪除'爲extern 「C」'繞'struct' –

+2

@AlexCohn,是的,它是.h文件。我試過去除extern「C」arround結構,但再次沒有幫助我。但是在將這個頭文件包含在我的目標C文件中之後,紅色的錯誤行突然消失了,然後我就可以使用.h文件中的所有JNI語法。 – KunalK

回答

2

在C,Java不同,你所擁有的文件與像storewatcher.c的文件名稱和與像storewatcher.h名。該.h文件不會被編上自己,你必須在一個或多個.c文件使用#include指令爲.h文件由編譯器,例如識別

#include "storewatcher.h"