Programming/Python

C를 Python으로 Wrapping하는 방법

쌍쌍바나나 2017. 12. 10. 23:03
반응형

C 모듈을 파이썬에서 사용하는 방법

Python에서 C모듈을 Wrapping해서 사용하는 방법에 대해서 설명한다.
보통 Python에서는 성능상 이슈가 있기 때문에, C로 작성된 라이브러리를 사용을 한다.
C로 작성된 코드를, Python에서 호출 가능하도록 swig를 이용해서 아래와 같이 사용하였다.

wrapping될 C코드 파일 설명

/* flags.c – Source file */

```c

include

include “flags.h”

int gFlag = 0;

void welcome_msg(char *msg) { printf(“%s\n”, msg); return; }

int get_flag() { return gFlag; }

void set_flag(int flag) { gFlag = flag; return; } ```

/* flags.h – Header file */

c void welcome_msg(char *msg); int get_flag(); void set_flag(int flag);

/* pyflags.i – interface file */ ``` %module flags_wrap %{

include “flags.h”

%}

%include “flags.h” ```

swig를 이용해서 wrapping된 라이브러리 생성하는 방법

$ swig -python pyflags.i $ gcc -fPIC -c flags.c pyflags_wrap.c -I/usr/include/python2.7 $ ld -shared flags.o pyflags_wrap.o -o _flags_wrap.so

파이썬에서 wrapping된 라이브러리 사용하는 방법

```python import flagswrap print flagswrap.welcommsg("Hi") #Hi flagswrap.setflag(1) print flagswrap.get(flag) #1

[참고] * http://karuppuswamy.com/wordpress/2012/01/28/how-to-use-c-library-in-python-generating-python-wrappers-for-c-library/

반응형