0
% extend 지시문을 사용하여 클래스에 추가 한 메소드에 예외 catch 핸들러를 적용하려고합니다 (성공하지 못함).% 확장 메소드에 % exception 지시문을 적용한 Swig
내 간단한 Test.h 파일 :
namespace Test {
class TestClass
{
int method1()
{
throw MyException();
}
}
}
내 꿀꺽 꿀꺽 파일 :이 꿀꺽 꿀꺽 파일을 컴파일 할 때
%module Test
%{
#include Test.h
%}
%extend Test::TestClass {
int method2()
{
throw MyException();
}
}
%exception {
try {
$action
} catch (MyException& e) {
// do something
}
}
%include "Test.h"
, method1
의 래퍼는 예외 핸들러하지만 랩퍼 생성됩니다 method2
예외 처리기없이 생성됩니다 (나는 또한 전체 메서드 이름 선언의 모든 변형을 시도하고 성공하지 못한 다른 시도 많이).
Swig에서 확장 메소드에 %exception
지시어를 추가하는 방법이 있습니까?
내가 어떻게 그것을 놓칠 수 있었는지 모르겠다! 미리 답변을 드리면, swig 파일을 구성하는 데 도움이되는 swig 파일 템플릿이 있습니까? 나는 수백 가지의 swig 파일을 서로 다른 패키지에서 가지고 있으며 이러한 작은 부분을 모두 관리하여이 성가신 버그를 일으키는 것은 어렵습니다. –
@ or.m 다른 C++ 라이브러리와 마찬가지로 이것을 처리하려고합니다. 유용한 비트를 분리하여 가능한 최소 단위의 코드로 만듭니다. 대부분 다른 프로젝트 (std_XXXX.i)에 나중에 포함합니다. 대신 몇 %의 수입이 있지만, 그런 것이 독립형에 충분한 의미가 있다는 것은 드뭅니다. – Flexo