2010-11-24 4 views
2

swig를 사용하여 파이썬 코드에서 사용할 c 함수를 감싸는 중 속성 오류가 발생합니다. chap과 함께 다른 기능도 있지만 작동하지 않는 몇 가지 이상한 이유가 있습니다./_swig_getattr AttributeError

모든 입자의 볼록 헐 (챕터)을 결정하기 위해 CGAL을 사용하려고합니다. 아래는 챕터 함수와 추적 코드입니다.

std::vector<Vec2d> World::chap() const 
{ 
    std::vector<Point_2> ch; 
    std::vector<Point_2> points; 
    std::vector<Vec2d> result; 
    for(size_t i = 0, sz = particles.size(); i < sz; ++i) 
    { 
     points.push_back(Point_2(particles[i]->position.x, particles[i]->position.y)); 
    } 
    CGAL::convex_hull_2(points.begin(), points.end(), std::back_inserter(ch)); 
    for(size_t i = 0, sz = ch.size(); i < sz; ++i) 
    { 
     result.push_back(Vec2d(ch[i].x(), ch[i].y())); 
    } 
    return result; 
} 

Traceback (most recent call last): 
    File "keiro.py", line 64, in <module> 
    if scenario.run(): 
    File "/Users/marcstrauss/Desktop/keiro/scenario.py", line 56, in run 
    dt = self.world.advance() 
    File "/Users/marcstrauss/Desktop/keiro/world.py", line 87, in advance 
    view.add_ch(self.chap()) 
    File "/Users/marcstrauss/Desktop/keiro/fast/physics.py", line 312, in <lambda> 
    __getattr__ = lambda self, name: _swig_getattr(self, World, name) 
    File "/Users/marcstrauss/Desktop/keiro/fast/physics.py", line 34, in _swig_getattr 
    raise AttributeError,name 
AttributeError: chap 

답변

2

함수가 public입니까? Protected로 선언 된 함수를 호출 할 때 동일한 오류가 발생합니다. The SWIG C++ manual은 개인 기능과 보호 기능이 랩핑되지 않음을 나타냅니다.