Включить файл.h в файл Java в Android, используя jni в качестве исходной папки файла.h?
void ProcedureParams_Initialize(ProcedureParams* pVal);
flag ProcedureParams_IsConstraintValid(const ProcedureParams* val, int* pErrCode);
flag ProcedureParams_XER_Encode(const ProcedureParams* val, ByteStream* pByteStrm, int* pErrCode, flag bCheckConstraints);
flag ProcedureParams_XER_Decode(ProcedureParams* pVal, ByteStream* pByteStrm, int* pErrCode);
flag ProcedureParams_BER_Encode(const ProcedureParams* val, ByteStream* pByteStrm, int* pErrCode, flag bCheckConstraints);
flag ProcedureParams_BER_Decode(ProcedureParams* pVal, ByteStream* pByteStrm, int* pErrCode);
typedef struct {
GeneralEvthParams g_params;
DataParams d_params;
} EvtHandlerParams;
Как я могу добавить файл.h прямо в мой файл.java. Я использую NDK и.h файл в моей папке jni. Я хочу использовать функции заголовочного файла. Как я могу напрямую использовать функции в Java-деятельности? Помогите мне, пожалуйста
1 ответ
Вы не можете вызывать функции C/C++ напрямую. У всех реализаций Java собственных функций C есть очень специфический набор параметров:
JNIEXPORT jint JNICALL Java_com_mycompany_MyClassName_myfunc
(JNIEnv * env, jobject obj, jint code) {
...
}
Так что вам придется создавать функции-оболочки.
Разумный подход состоит в том, чтобы определить класс, включающий в себя Java-версии всех ваших собственных функций (в виде статических методов или методов экземпляра), и вызывать их через этот класс.
Чтобы сгенерировать заголовки C из Java (ну, не исходные, а файлы.class), вы можете сделать:
cd bin/classes
javah com.mycompany.MyClassName com.mycompany.AnotherClassName