Android 无法在ndk中解析类型

Android 无法在ndk中解析类型,android,android-ndk,java-native-interface,Android,Android Ndk,Java Native Interface,在android ndk中,当我使用helper工具javah生成的头文件时,它工作正常。但是,当我创建一个扩展名为.h的普通文件并包含jni.h和任何其他必需的头文件时,我无法使用包含的头文件中的类型、关键字或任何函数,并且它总是向我显示“无法解析的类型‘whatever’”而我可以在机器生成的头文件中使用javahtools做同样的事情,而无需任何理由 虽然我已经在C/C++中包含了arm平台库,但一般->路径和符号->包含。它不断向我显示这个错误 考虑下面的代码 #include "sto

在android ndk中,当我使用helper工具
javah
生成的头文件时,它工作正常。但是,当我创建一个扩展名为.h的普通文件并包含
jni.h
和任何其他必需的头文件时,我无法使用包含的头文件中的类型、关键字或任何函数,并且它总是向我显示“无法解析的类型‘whatever’”而我可以在机器生成的头文件中使用
javah
tools做同样的事情,而无需任何理由

虽然我已经在C/C++中包含了arm平台库,但一般->路径和符号->包含。它不断向我显示这个错误

考虑下面的代码

#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
#包括“store.h”
#包括
#包括
#包括
#ifndef\u STOREWATCHER\u H_
#定义\u STOREWATCHER\u H_
#定义睡眠持续时间5
#定义状态\u确定0
#定义状态_KO 1
#ifdef_uucplusplus
外部“C”{
#恩迪夫
类型定义结构{
商店*mStore;
JavaVM*mJavaVM;
jobject MSStoreFront;
pthread_t mThread;
int32_t mState;
}店主;
#ifdef_uucplusplus
} 
#恩迪夫
#恩迪夫
这段代码告诉我,
Store
JavaVM
jobject
pthread\u t
无法解析。请帮帮我


任何形式的帮助都将不胜感激。

与Java不同,C中的文件名为
storewatcher.C
,文件名为
storewatcher.h
.h
文件本身没有编译,您必须在一个或多个
.c
文件中使用
\include
指令,编译器才能识别
.h
文件,例如

#include "storewatcher.h"

不知道如何创建一个C文件并将这个头文件包含到这个C文件中,解决了我的问题。有人能告诉我这是怎么发生的吗?或者我必须在任何C文件中包含这个头文件..?发布的代码是一个
.h
文件,不是吗?将其包含在
.cpp
文件中是否会导致编译错误?您是否尝试删除
struct
@AlexCohn周围的
extern“C”
,是的,它是一个.h文件。我试着移除结构体周围的外部“C”,但同样没有帮助。但是在我的目标C文件中包含了这个头文件之后,红色的错误行突然消失了,然后我就能够使用.h文件中的所有JNI语法。哦,我相信我理解你的意思。。。在C语言中,与Java不同的是,文件名为
storewatcher.C
,文件名为
storewatcher.h
.h
文件不是自己编译的,您必须在一个或多个
.c
文件中使用
\include
指令,编译器才能识别
.h
文件。@AlexCohn,是的,正是您所说的。