2012-08-29 2 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 

StoreJavaVMjobject, pthread_t가 해결 될 수없는이 코드에서 저를 보여줍니다. 도와주세요.

어떤 종류의 도움을 주시면 감사하겠습니다.

+0

어떻게 CFS 파일을 만들고이 헤더 파일을이 C 파일에 포함하면 문제가 해결되는지 알 수 없습니다. 아무도 그것이 어떻게 발생하는지 또는 어떤 C 파일에이 헤더 파일을 포함시켜야하는 것처럼 말할 수 있습니까? – KunalK

+0

게시 된 코드 조각은'.h' 파일입니다. 그렇지 않습니까? '.cpp' 파일에 포함 시키면 컴파일 오류가 발생합니까? 'struct "주위에서'extern"C "'를 제거하려고 시도 했습니까? –

+2

@AlexCohn, 그렇습니다 .h 파일입니다. extern "C"arround 구조체를 제거하려고 시도했지만 다시는 그 부분이 나를 도와주지 못했습니다. 하지만이 헤더 파일을 대상 C 파일에 포함 시키면 빨간색 오류 줄이 갑자기 사라져서 .h 파일의 모든 JNI 구문을 사용할 수있게되었습니다. – KunalK

답변

2

Java에서와 달리 storewatcher.c과 같은 이름의 파일과 storewatcher.h과 같은 이름의 파일이 있습니다. .h 개의 파일은 컴파일되지 않으며 컴파일러에서 .h 파일을 인식하려면 하나 이상의 .c 개의 파일에 #include 지시문을 사용해야합니다.

#include "storewatcher.h" 
관련 문제