繁体   English   中英

将SWIG类C ++回调到Java

[英]Callback to SWIG class C++ to Java

我遇到了一些从C ++到Java的SWIG绑定问题。 基本上,我使用在Java中扩展的回调函数来调用绑定类。 这是个主意:

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

按照常规步骤,使用SWIG将binded.h包装到java类中

%{
   #include "binded.h"
%}
%include "binded.h"

然后在java中

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

并且run()的结果是“未实现”。 似乎函数f的扩展未在使用“默认”函数的C ++包装函数中更新。

根据我在SWIG文档http://www.swig.org/Doc2.0/SWIGDocumentation.html#SWIG_nn30中阅读的内容,似乎我需要某种方式告诉SWIG它将在回调中接收一个类,但是我可以没有看到用类而不是像文档中那样使用函数的方式。

有什么线索吗?

提前致谢

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

接口文件将类似于:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM