Включить файл.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
Другие вопросы по тегам