簡體   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