回调 SWIG class C++ 到 Java

Callback to SWIG class C++ to Java

我遇到了一些从 C++ 到 Java 的 SWIG 绑定问题。基本上,我使用我在 java 中扩展的回调来调用绑定 class。这是想法:

binded.h
class callback {
public:
    virtual void f(){
        std::cout<<"Not implemented"<<std::endl;
    }
}
extern void create(callback *callback);

binded.h 按照通常的程序

使用 SWIG 包装成 java class
%{
   #include "binded.h"
%}
%include "binded.h"

然后在java

public class ExtendedCallback extends callback
{
    public void f(){
         //code
    }
    public void run(){
        create(this);
    }
}

而 运行() 的结果是 "Not implemented"。似乎函数 f 的扩展没有在使用 "default" 函数的 C++ 包装函数中更新。

根据我在 SWIG 文档中阅读的内容 http://www.swig.org/Doc2.0/SWIGDocumentation.html#SWIG_nn30 似乎我需要一些方法来告诉 SWIG 它将在回调中收到 class,但我看不到方式使用 class 而不是像文档中那样使用函数来完成。

有线索吗?

提前致谢

Java 部分 SWIG 使用回调包装命名导演:http://www.swig.org/Doc2.0/Java.html#java_directors

接口文件类似于:

%module(directors="1") modulename
%{
   #include "binded.h"
%}
%feature("director") callback;
%include "binded.h"