回调SWIG C ++类到Java

时间:2015-09-14 09:34:57

标签: java c++ swig

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

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

binded.h使用SWIG封装到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 ++ wraped函数中更新。

根据我在SWIG文档中读到的http://www.swig.org/Doc2.0/SWIGDocumentation.html#SWIG_nn30似乎我需要一些方法来告诉SWIG它将在回调中接收一个类,但是我看不到用类替代它的方法使用类似的功能在文档中完成。

有任何线索吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

SWIG的Java部分使用包含命名控制器的回调:http://www.swig.org/Doc2.0/Java.html#java_directors

接口文件将类似于:

define('WP_USE_THEMES', false);
require __DIR__."/../public/wordpress/wp-blog-header.php";