Python

デフォルト引数で失敗した

2009-10-19 追記 コメントで指摘してもらっているようにデフォルト引数ではなくて、キーワード引数の問題だった。 よく分からないものを無理して使った上に、ブログに間違いを載せるとか、恥の上塗りでしかなかった。 最近は特に勉強もせず、ネトゲやったり…

ctypesで関数ポインタを扱う

ctypesを使うとDLLが呼び出せることを前に書いた。 こんな感じで。 from ctypes import * user32 = windll.user32 user32.MessageBoxW(0, u'Python ctypes test', 0, 0) ctypesの便利さはこんなものじゃない。 Pythonの関数を関数ポインタのように扱って、ca…

ctypesの三つのロード方法

ctypesではDLLのロード方法が三つある。 cdll、windll、oledllの三つだが、その違いはcallされた時のスタックの扱いと、戻り値だ。 ややっこしいのでまとめてみる。 cdllで呼び出すべき関数 cdecl呼び出し規約に従う intを返す windllで呼び出すべき関数 std…

ctypesを使ってみる

ctypesを使うとPythonからDLLや、Shared libraryを呼び出すことが出来る。 ctypes_test.py from ctypes import * msvcrt = cdll.msvcrt message = "Python ctypes test\n" msvcrt.printf(message) ポインタや構造体、ユニオンもちゃんと定義できる。 以下は…