SWIG:%interface_impl不生成java接口(ubuntu)

时间:2016-09-20 09:26:16

标签: java ubuntu swig

使用SWIG为C ++代码生成java包装器时遇到问题。我有一个使用多继承的C ++类。由于Java不支持它,我打算将一个基类包装为Java接口(因为它是C ++中的抽象类)。以下简单示例显示了我的C ++ header.h的外观。

    class Base1 {
    public:
        virtual void method1() = 0;
    }

    class Base2 {
    public:
        void metghod2();
    }

    class Derived : public Base1, public Base2{
    public:
        virtual void method1();
    }

我的input.i文件看起来像这样

    %module wrap

    %include <swiginterface.i>
    %interface_impl(Base1);

    %{
        #include "header.h"
    %}

    %include "header.h"

SWIG文档说,在这种情况下,应该为类Base1生成两个Java包装器文件:Base1.java(包含java接口)和Base1SwigImpl.java(包含java代理类)。问题是SWIG只为我生成了第二个文件,并且没有java接口文件(Base1.java)。还有一个SWIG警告:

  

警告813:派生代理的警告:Base Base1被忽略。 Java不支持多重继承。

问题只发生在ubuntu上。当我将它包装在Windows上时,一切正常。在Windows上,我在ubuntu SWIG 3.0.8上有SWIG 3.0.10

在ubuntu上安装SWIG后,没有swiginterface.i文件,我收到错误,找不到此文件。但我将文件复制到所有.i文件所在的位置,现在SWIG看到了它,但钢铁不能正常工作,正如我在上面解释的那样。

我使用命令从控制台运行swig:

swig -c++ -java -package pcg input.i

任何想法如何解决?

感谢任何帮助。

0 个答案:

没有答案
相关问题