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
指令的顺序。你应用它们的顺序很重要,它允许你有选择地包含和排除被修改的东西。
我正在尝试将异常捕获处理程序应用于我使用 %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
指令的顺序。你应用它们的顺序很重要,它允许你有选择地包含和排除被修改的东西。