Personal tools
You are here: Home メモ PythonからCで書いたモジュールを使う for Windows

PythonからCで書いたモジュールを使う for Windows

— filed under:

PythonからC言語で書いた外部モジュールを呼び出します。WIN32API呼べばすぐできるのに‥‥という時に便利。

とりあえず以下のことができます。

  • importできるモジュールを作る
  • モジュールが提供する関数を通してWIN32APIを呼び出す
  • モジュールが提供する定数を通してWIN32で定義されている定数を使う

たいしたコードではないので、Downloadしてコードを眺めてみるのが早いかと思います。ので、コード解説は無しで。

サンプルコードのDownload

WIN32APIを使用しているので、ビルドするためにはVisualStudioかそれと同等のWIN32ビルド環境 [1] が必要です。

[1]FreeなCモジュールビルド環境 とか。

サンプルコードのビルド

展開したフォルダに移動して、 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を眺めてみてください。

おまけ

サンプル中で使用している SHBrowseForFolderのヘルプ

Document Actions