我想通过jni注册一个本地函数,为此,我必须在jninativemethod结构中存储一个函数指针,该函数指针具有void *字段。如何正确使用RegisterNatives
在设置该字段时,在使用unix编译GCC时出现错误error: invalid conversion from void (*)(JNIEnv*, _jclass*, jlong, _jobject*)' to void*
。
我环顾四周,似乎你不允许将函数指针转换为void指针,那么这个接口是否被破坏?有没有一种“正确”的方式来做到这一点? (除了使用javah生成头文件和导出函数外)
你铸造你的函数指向'void *'的指针,还是试图直接指定它们?直接分配不起作用,但'reinterpret_cast'应该可以做到。 –
显式转换为void *会关闭编译器,我只是担心它会在某个平台上崩溃,因为它不被C++标准所允许。 – Bwmat