swig 3

Python + C++ 시행착오

아핳핳핳... C++로 파서를 짜기는 매우 귀찮고 힘든 일이다.입력 형식이 들쭉날쭉해서 이거 지원하고 저거 지원해야 할 때 특히 파이썬이 절실하다. 그래서? 코어 자료구조는 C++, 파서 부분은 Python으로 짜고 Swig/Python 으로 wrapping 했다. 작동은 잘 한다. 거기까진 좋은데, Memory Leak이 있나 없나 도통 모르겠다.GDB, valgrind 를 이런 경우에도 돌릴 수 있다고는 한다만 글쎄. 그냥 C++로 짠 것 보단 사용이 쉽지 않다. valgrind의 경우 Python 에서 권장하는 error suppression을 써도 화면에 이거저거 지저분한거 나와서 사용이 힘듦. 그래서 내 생각엔, 다음엔,(입력형식 --> json) (Python)(json --> 로딩) (C++..

Unix 2016.10.22

SWIG와 Python3... C++ 클래스를 Python 3에서 사용하기

일단 swig를 설치한다. Python에서도 쓰고싶은 C++ 클래스를 준비한다. 이미 만들어져 있다고 치자. 필자의 경우는 mo_solver.h 란 직접 만든 헤더파일이다. 이 안엔 클래스가 여러개 들어있다. 우선은 swig를 위해 Interface 파일을 작성해야 한다.mo_solver.h 니까 mo_solver.i 라고 하지 뭐. // mo solver wrapper for Python 3%module MoSolver%{#include "mo_solver.h"%} /** * MO solver class * * r denotes the dimension of edge weight vector. */class MoSolver{public: void printGraph( std::ostream& o ) c..

Unix 2012.04.10