我正在cocos2d-x平台上开发一个插件项目,我想编写一些c++的包装接口以通过JNI从jar
SDK调用java方法。我知道如何使用JNI调用静态java方法,但是我对java函数中的接口参数感到困惑。
我有一个处理回调的cpp函数指针:
typedef void (* MyCallback)(int responseCode, string arg1, set<string> arg2);
我想编写一个类似于下面这样的Cpp包装器方法: ```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).
我想在包装器中调用的Java方法是
public static void setTags(Context context, Set<String> tags, TagCallback callback)
TagCallback
是API用户实现的接口。
那么,是否可能最终将TagCallback
回调到MyCallback
函数?换句话说,我可以使用jni
将cpp函数指针转换为java接口吗?
感谢您的耐心。
编辑:
以下是仅使用Java时如何使用setTag
:
public static void setTags(context, tags, new TagCallback{
@Override
public void callback(int arg0, String arg1, Set<String> arg2) {
// TODO Auto-generated method stub
}
})
我希望我的SDK用户能够像这样使用我的cpp包装方法:
void setTagCallback(int responseCode, string arg1, set<string> arg2){
//users handle callback themselves.
}
void someOtherMethodInvokeTheCppWrapperMethod(){
MyCallback callback = setTagCallback;
set<string> tags;
MyCpp::setTags(tags,callback);
}
.jar
文件?如果您能提供一些代码示例,那将是非常有帮助的。 - johnMa