回调 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"
我遇到了一些从 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"