我有一个c ++类,我使用swig将它包装到java。我想扩展或添加一个新的成员函数到这个类,但我也想使用我自己的jni函数作为这个新的成员函数或让我自己的jni函数在这个新的成员函数中调用。我怎么能在swig中做到这一点?我知道%native,但它似乎只生成静态方法,但我希望它生成对象方法。
答案 0 :(得分:0)
如果您只想在其中一个代理类中添加额外的native
方法,可以使用以下内容:
%module test;
%typemap(javacode) foo %{
public void native HandRolled();
%}
struct foo {
void bar();
};
void test(foo& f);
就个人而言,如果你有很多你不想直接用%native
使用的本机代码,我会倾向于将它们分成不同的类,即你有SWIG生成的部分和手动,JNI零件作为不同的项目。然后,您可以根据需要使用类型映射将纯JNI部件“按摩”到SWIG生成的部件中。