SWIG 는 C나 C++ 과 다른 여러가지 언어들을 간단하게 연결시켜서 사용할 수 있도록 도와주는 언어이다. 즉 C나 C++ 로 만들어진 여러가지 코드들을 Perl, Python, Tcl, Ruby, Java 등에서 사용가능하도록 만들어 준다. 우리가 자주사용하는 스크립트 언어인 Perl, Python 은 매우 강력하지만 몇가지 단점들을 가지고 있다. source 코드가 공개된다는 점과, 실행 속도가 느리다는 점이다. 즉, 속도에 매우 민감한 효율적인 코드를 작성할 필요가 있을때 문제가 될 수 있다.
SWIG 를 이용하면 인터페이스 부분은 매우 빠르고 손쉽게 개발이 가능한 Perl, Python 등으로 개발을 하고 코드를 숨겨야 되거나 혹은 나은 성능을 필요로 하는 핵심 부분은 C 로 작성하도록 해서 서로 연결시키는 것이다. 이렇게 함으로써 개발속도 향상, 효율성, 코드 은닉의 효과를 볼 수 있다.
sudo apt-get install swig
example.c
#include <stdio.h>
#include <time.h>
double My_var = 3.0;
int my_mod(int x, int y) {
return (x%y);
}
char * get_time()
{
time_t tV;
time(&tV);
return ctime(&tV);
}
example.i
%module example
%{
extern double My_var;
extern int my_mod(int x, int y);
extern char * get_time();
%}
extern double My_var;
extern int my_mod(int x, int y);
extern char * get_time();
import example
mod = example.my_mod(7,3)
time = example.get_time()
print(mod)
print(time)
swig -python example.i