3

私はswigでpythonを拡張することを学んでいます。swig tutor では、次のように書いています。

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'
 >>>

これは、共有ライブラリを Python モジュールとしてインポートできることを意味します。しかし、通常の Python モジュールは ascii ファイルまたはバイト コード ファイルであるのに対し、共有ライブラリ ファイルは、多くのマシン コードといくつかの追加情報で構成されるオブジェクト ファイルであることを知っています。どのようにしてマシンコードを Python 仮想マシンで実行できるのか、私は混乱しています。

4

1 に答える 1

4

最終的に、すべてのプログラムは機械語を実行します。Python が共有ライブラリをロードするとき、関数を呼び出します 。この関数は Python にコールバックして、Python が持つ型、関数、モジュール、および関数のマシン アドレスと型記述子を通知します。Python.initlibraryName

于 2013-07-16T14:00:24.893 に答える