Swig在%extend方法上应用%exception指令

时间:2016-09-26 09:33:17

标签: c++ exception swig extend

我正在尝试将异常catch处理程序应用于我使用%extend指令添加到类的方法(但没有成功)。

My Simple Test.h文件:

namespace Test {
  class TestClass
  {
    int method1()
    {
      throw MyException();
    }
  }
}

我的Swig文件:

%module Test

%{
#include Test.h
%}

%extend Test::TestClass {
  int method2()
  {
    throw MyException();
  }
}

%exception {
  try {
    $action
  } catch (MyException& e) {
    // do something
  }
}

%include "Test.h"

当我编译这个swig文件时,method1的包装器是用异常处理程序生成的,但method2的包装器是在没有异常处理程序的情况下生成的(我也尝试了完整方法的所有变体)名称声明和其他许多尝试没有成功)。

有没有办法在Swig中将%exception指令添加到扩展方法?

1 个答案:

答案 0 :(得分:0)

在您的界面中交换%extend%exception指令的顺序。您应用它们的顺序非常重要,它允许您有选择地包含和排除被修改的内容。