Python 学習:ctypes 入門

2014-05-18 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での、blogramのランクインカテゴリは、
2、3、2、1、0、 0、0、0、1、0(39)で、換算ポイント 61pt 。
昨日朝方ダウンした「Firefox」だが、昼前に3位にアップ。
でも、今朝方再び4位にダウン。変動が激しすぎる。
他に、先ほど「Linux」が9位にダウン。
・-・ - -・

さて、本文。

前記事:
Python 学習:Python to/from C
で纏めた方式を吟味した。

[1] C から Python
は、取り敢えずメモのみ。

やはり、メインは「Python」と云うことで、
[2] Python から C
ですね。

(3) subprocess モジュール(Python 標準)
は、これまでの「Perl」でやってきた方式で、
これからの「Python」でも行うでしょう。

そこで、
(4) ctypes モジュール(Python 標準)
の学習。
「ctypes 入門」です。

まずは、
Python 学習:インタプリタの拡張?
の時に参照した、
15.18. ctypes - Pythonのための外部関数ライブラリ

他に、若干探して、

「山本隆の開発日誌」の
Python で Win32API プログラミング入門
  ・・・・・
  Python 2.5以降には、ctypes が付属しているので、
  今日からすぐに Win32API を利用したプログラミングが出来ます。
  ・・・・・
や、
「ブーログ」の
MSYSとMingWでwin32のDLLをつくる
  MingWとMSYSはインストールされているものとする。
  以下のファイルwinhello.cを作成する。
  ・・・・・
  MSYSシェルからコンパイルする。
  ・・・・・
  成功するとwinhello.dllができる。
  これをrundll32.exeを使って実行してみる。
  ・・・・・
などを参考に、試行錯誤した。


結果、<紙>にとって、
これが最低限と思われる方式を確立した???

最初に、欲しい関数をコーディングする。
例えば、「test_dll.c」とする。

int Add( int x, int y ){
return x+y;
}


次に、
このソース・コードをコンパイル/リンクする、
コマンド・ファイル「test_dll.bat」を作る。

gcc -c test_dll.c
gcc -shared -o test_dll.dll test_dll.o



これを実行することで、「test_dll.dll」が出来る。
最後に、
作った関数を利用するメインの Python ファイルを作る。
「test_dll.py」とした。

import ctypes
# ----------------- dll 読み込み
libc = ctypes.CDLL( 'test_dll.dll' )
# ----------------- dll内関数の実行
print libc.Add( 5, 6 )
_ = raw_input()



この「test_dll.py」をダブルクリックすると、
(黒い)DOS窓が現れて、左上隅に 11 とでる。
これで、キーボード入力待ち状態。

完成!!!

この場合は、
引数として整数データ2つを渡し、
1つの整数データを受け取っている。

これで、“入門編”は修了???


本日はここまで。


Python 学習は続く、・・・



見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


140501
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク