- Info
PythonからCで書いたモジュールを使う for Windows
PythonからC言語で書いた外部モジュールを呼び出します。WIN32API呼べばすぐできるのに‥‥という時に便利。
とりあえず以下のことができます。
- importできるモジュールを作る
- モジュールが提供する関数を通してWIN32APIを呼び出す
- モジュールが提供する定数を通してWIN32で定義されている定数を使う
たいしたコードではないので、Downloadしてコードを眺めてみるのが早いかと思います。ので、コード解説は無しで。
WIN32APIを使用しているので、ビルドするためにはVisualStudioかそれと同等のWIN32ビルド環境 が必要です。
展開したフォルダに移動して、 python setup.py build とコマンドをたたけば終わりです。
mod_sample をビルドする
> python setup.py build
running build
running build_ext
building 'modsample' extension
creating build
creating build\temp.win32-2.3
creating build\temp.win32-2.3\Release
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\cl.exe /c /nologo /Ox /MD /W3 /GX /DNDEBUG -IC:\Develop\Python23\include -IC:\Develop\Python23\PC /Tcpy_modsample.c /Fobuild\temp.win32-2.3\Release\py_modsample.obj
cl : コマンド ライン warning D4029 : 標準の編集コンパイラでは最適化は使用できません。
py_modsample.c
creating build\lib.win32-2.3
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\link.exe /DLL /nologo /INCREMENTAL:NO /LIBPATH:C:\Develop\Python23\libs /LIBPATH:C:\Develop\Python23\PCBuild Shell32.lib /EXPORT:initmodsample build\temp.win32-2.3\Release\py_modsample.obj /OUT:build\lib.win32-2.3\modsample.pyd /IMPLIB:build\temp.win32-2.3\Release\modsample.lib
ライブラリ build\temp.win32-2.3\Release\modsample.lib とオブジェクト build\temp.win32-2.3\Release\modsample.exp を作成中
>
buildフォルダ以下に生成されたmodsample.pydをソースコード展開先フォルダ
にコピーして、 python test.py を実行します。フォルダ選択ダイアログが
表示されたら成功です。詳しくはtest.pyを眺めてみてください。