相关疑难解决方法(0)

jni调用java方法,该方法将自定义java接口作为参数

我正在上的cocos2d-X平台的插件项目,我想编写C++封装接口,通过调用Java方法JNIjarSDK.我知道如何使用JNI来调用静态java方法,但我对java函数中的interface参数感到困惑.我有一个处理回调的cpp函数指针:

typedef void (* MyCallback)(int responseCode, string arg1, set<string> arg2);
Run Code Online (Sandbox Code Playgroud)

我想写一个cpp包装器方法,如:

static void MyCpp::setTags(set<string> tags, MyCallback callback) //it use `JNI` to invoke java method setTags(Context context, Set<String> tags, TagCallback callback).
Run Code Online (Sandbox Code Playgroud)

我想在包装器中调用的java方法是

public static void setTags(Context context, Set<String> tags, TagCallback callback)
Run Code Online (Sandbox Code Playgroud)

并且TagCallback是API用户实现的接口.那么,是否有可能TagCallback最终回调MyCallback函数?换句话说,我可以使用jni将cpp函数指针转换为java接口吗?谢谢你的耐心 .

编辑:setTag如果用户只想使用java, 这里是如何使用:

public static void setTags(context, tags, new TagCallback{
    @Override
    public void callback(int arg0, String arg1, Set<String> arg2) {
            // TODO Auto-generated method stub …
Run Code Online (Sandbox Code Playgroud)

c++ java java-native-interface android cocos2d-x

5
推荐指数
1
解决办法
3953
查看次数

标签 统计

android ×1

c++ ×1

cocos2d-x ×1

java ×1

java-native-interface ×1