我有一个简单的问题,我似乎找不到答案.我已经用C编写了一个方法,该方法应该调用Java中带有对象的方法.例如,我的Java代码具有:
public class MyClass {
public class ReturnType {
...
}
public void methodToBeCalledFromC( ReturnType obj ) {
...
}
}
我的C有:
const jclass classID = s_env->FindClass( className );
const jmethodID methodID = s_env->GetMethodID( classID, "methodToBeCalledFromC", "(LMyClass;)V" );
// The call.handler() function returns a reference to the ReturnType object
// This produces a compilier warning and causes a seg-fault.
s_env->CallVoidMethod( call.handler(), jmid, userInfo );
我已经检查了classID和methodID以及call.handler()返回一个jbject,我为此调用了NewGlobalRef(),所以我认为一切都OK.
可以像这样通过工作吗?
解决方法:
检查编译器警告-可能是在告诉您一些重要信息!
标签:java-native-interface,java,c-4
来源: https://codeday.me/bug/20191208/2091359.html