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

Swig applying %exception directive on %extend methods

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

我的简单 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 的包装器是在没有异常处理程序的情况下生成的(我也尝试了所有变体完整的方法名称声明和许多其他尝试均未成功)。

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

交换界面中 %extend%exception 指令的顺序。你应用它们的顺序很重要,它允许你有选择地包含和排除被修改的东西。