[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 メーリングリストの案内