3

プロジェクトでは、Python の opengl ライブラリを含む C++ コードを swig でバインドする必要があります。問題は、OpenGl 共有ライブラリを含めると、例外ハンドラーが機能しなくなることです。実例として、このプロジェクト:

たとえば .i

/* example.i */
%module example
%{
#include "example.h"
%}
class Error{
public:
    Error();
    const char *what() const throw();   
    virtual ~Error() throw();
};
void foo() throw(Error);

たとえば .cpp

#include"example.h"
Error::Error(){}
const char *Error::what() const throw() { return "FOO"; }
Error::~Error() throw(){}

void foo() throw(Error){throw(Error());}

たとえば .h

class Error{
public:
  Error();
  const char *what() const throw();
  virtual ~Error() throw();
};
void foo() throw(Error);

たとえば .py

from example import * 
try:
    foo()
except Error,e:
     print e.what()

メイクファイル

swig -c++ -python example.i
g++ -I/usr/include/python2.7/  -c -fpic example.cpp example_wrap.cxx
g++ -lGL -shared example.o example_wrap.o -o _example.so
python example.py

-lGL を使用すると、セグメンテーション違反が発生します。そうしないと、python がエラーを処理します。この問題を解決するアイデアはありますか?

4

0 に答える 0