2013-07-16 3 views
3

나는 swig로 파이썬을 확장하는 법을 배웠다. 꿀꺽 꿀꺽 교사, 그것은 기록 :왜 파이썬이 공유 라이브러리를 모듈로 가져올 수 있습니까?

Building a Python module 

Turning C code into a Python module is also easy. Simply do the following (shown for Irix, see the SWIG Wiki Shared Libraries page for help with other operating systems): 

unix % swig -python example.i 
unix % gcc -c example.c example_wrap.c \ 
    -I/usr/local/include/python2.1 
unix % ld -shared example.o example_wrap.o -o _example.so 

We can now use the Python module as follows : 
>>> import example 
>>> example.fact(5) 
120 
>>> example.my_mod(7,3) 
1 
>>> example.get_time() 
'Sun Feb 11 23:01:07 1996' 
>>> 

그것은 공유 라이브러리가 파이썬 module.But 내가 공유 라이브러리 파일이 많은 기계 코드 및 몇 가지 추가 구성 객체 파일인지 알고 가져올 수 있음을 의미 정보, 일반 파이썬 모듈은 ascii 파일이나 바이트 코드 파일, 기계 코드는 파이썬 가상 머신에 의해 실행될 수 있지만, 나는 혼란 스럽다.

답변

3

결국 모든 프로그램이 기계 코드를 실행합니다. Python 이 공유 라이브러리를로드하면 함수 initlibraryName을 호출합니다. 이 함수는 을 파이썬으로 호출하여 어떤 타입, 함수 및 모듈을 가지고 있는지 알려주고, 과 함수의 컴퓨터 주소와 타입이 입니다. 파이썬은 그것들을 테이블에 추가합니다 (그것들은 이며 파이썬 코드가 아니라 C 모듈에 있음을 나타냄). 을 호출하면 코드가 보이며 외부 모듈에 있음을 알리고 이에 따라 호출합니다.

+0

James Kanze, 대답은 좋습니다. 나는이 주제에 대해 더 알고 싶다, 나는 이것으로 검색하지만 약간의 자료 만 있으면 몇 가지 링크를 제공 할 수 있는가, 고마워. –

+0

http://docs.python.org/2/extending/은 좋은 초기 소개를 제공하고 http://docs.python.org/2/c-api/는 모든 세부 사항과 함께 참고 자료입니다. (처음 읽으십시오.) 당신이 찾고있는 것을 알기에 충분할 때까지, 두 번째 것은별로 도움이되지 않습니다. –

관련 문제