리눅스에서 Python과 C를 연동하는 방법에 관한 내용은 많이 찾을 수 있었는데, 윈도우에서 하는 방법에 대한 자료가
별로 없어 따라하기 형식으로 간단하게 정리해보았습니다..
내용을 보시기 전에 자신의 컴퓨터에 Cygwin과 Gcc가 준비되어 있지 않은 경우 [여기]를 참고해서 먼저 설치하시기
바랍니다.
설치를 하셨으면 다음과 같은 간단한 C 코드를 작성해서 sample.c 라는 이름으로 적당한 디렉토리에 저장합니다.
/* sample.c */
int echo(int p)
{
return p;
}
int echo(int p)
{
return p;
}
int add(int x, int y)
{
return x + y; }
그리고 Cygwin을 열어서 sample.c 파일이 있는 디렉토리로 이동합니다.
여기에서는 D:\PrjRoot\python_lec 디렉토리에 sample.c 파일이 있다고 가정하고 진행합니다.
다음은 sample.c 코드를 Python에서 이용하기 위한 정보 파일인 Swig 인터페이스, sample.i 파일을 만듭니다.
/* sample.i */
%module sample
%{
extern int echo(int);
extern int add(int, int);
%}
%module sample
%{
extern int echo(int);
extern int add(int, int);
%}
extern int echo(int);
extern int add(int, int);
그리고 Swig를 이용해 Wrapper 파일을 생성합니다.
자, 다음은 sample.c 파일과 sample_wrap.c 파일에 대한 object 파일을 만들 차례입니다.
여기에서 옵션 -I (대문자 아이) 에는 Python 설치 디렉토리 하위의 include 디렉토리 경로를 적어주면 됩니다.
그럼 이제 object 파일로 공유 라이브러리를 만들어 Python에서 사용할 수 있도록 해보죠.
옵션 -L (대문자 엘) 에는 Python 설치 디렉토리 경로를 적어주고,
-l (소문자 엘) 에는 Python 설치 디렉토리에 있는 pythonXX.dll (Python 2.6을 설치한 경우에는 python26.dll)의
파일명(pythonXX)을 적어주면 됩니다.
마지막으로 test.c 에 있는 함수들을 사용할 수 있는지 파이썬 코드를 만들어 테스트해 봅니다.
# test.py
import sample
위와 같은 결과가 나온다면 Python과 C 연동이 제대로 된겁니다.import sample
print sample.echo(5)
print sample.add(2, 5)
참고로 제가 테스트한 환경은 다음과 같습니다.
- Windows XP Professional SP3 한글
- Python 2.6
- SWIG 1.3.36 윈도우용
- Cygwin 2.573.2.3
[기타]
1. Cygwin에 Gcc 설치하기
2. 리눅스에서 Python과 C 연동하기 C, 씨, gcc, Python, Python C 연동, swig, 스위그, 파이썬, 파이썬 연동

