[Python-ml-jp 3394] Re: Python->C API
Noboru Yamamoto
noboru.yamamoto @ kek.jp
2005年 10月 3日 (月) 12:11:07 JST
今日は、山本昇@加速器.KEKです。
私がC/C++ライブラリをPythonから使うためにつかうのは、
1) SWIGでラッパを作成する。
SWIG(Simplified Wrapper and Interface Generator)でC/C++ライブラリと
Pythonをつなぐための
Cプログラムを生成します。この Wrapperはコンパイル後にPythonからimportで
きる動的ライブラリに
なります。SWIGやCコンパイラをインストールしておく必要があります。
http://www.swig.org/
にwebページがあります。このページの[Japanse]リンクは, 残念なことに、切
れてしまっているようです。
2) Masudaさんのメールにもあったctypesモジュールを使う。
Yasushi Masuda wrote:
> 少し使い勝手はよくありませんが, サードパーティの ctypes という拡張モジュールも
> あります.再コンパイルは必要ありません.
>
> http://starship.python.net/crew/theller/ctypes/
>
> やや古いバージョンのものですが,ドキュメントの和訳もあります.
> http://www.python.jp/doc/contrib/ctypes/
>
CのポインタがPythonのレベルまで見えてしまいますので、
Python レベルでWrapperをつくった方がよいかと思います。
コンパイルしなくてよいので、簡単ですが、ポインタの使い方を間違えると
システムをハングさせることも可能です(すくなくともWinMeでは。)
つたない参考例を
http://www-acc.kek.jp/WWW-ACC-exp/KEKB/control/member/N.Yamamoto/Python/USBit/USBitLib_py_introduction.html
においてあります. ご参考になれば幸いです。
ちなみにctypesモジュールはそのものはMacOSXでも動作します。
以上
山本 昇
> kuniyoshi Yamashita wrote:
>
>>山下です。
>>
>>2年ほどPythonを使っていなかったのですが、また、使いはじめました。
>>ところで、Windows版Pythonでの質問です。
>>マニュアルのどこどこ参照!でもかまいません。おしえて欲しいのです。
>>
>>Windowsの Visual C/C++ verson 6 でコンパイルされたオリジナル
>>ハードウエア制御用 dll ライブラリーがあります。
>>このAPIは、マニュアル資料レベルで公開されているとします。
>>
>> Pythonから、直接のDLLのCのAPIをimportとして使う方法はありま
>>すでしょうか?
>>
>>Python/C API のリファレンスを 参照したのですが、
>>なにやら Pythonの拡張モジュール化などでオリジナル
>>ハードウエア制御用のソースが必要になり再コンパイルと
>>いったニュアンスがありました。
>
>
>
Python-ml-jp メーリングリストの案内