JNI:从C ++调用一个带有Object的方法

时间:2011-05-10 19:08:44

标签: java c++ java-native-interface

我有一个简单的问题,我似乎无法找到答案。我在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()正在返回一个我称之为NewGlobalRef()的jbject,所以我认为一切正常。

可以像这样传递一个作业吗?

1 个答案:

答案 0 :(得分:3)

检查编译器警告 - 它可能告诉你一些重要的事情!