1

C でいくつかの関数を作成しましたが、Python スクリプトを介してそれらにアクセスしたいと考えています。私の調査ではctypesstructライブラリと、共有オブジェクトと dll にアクセスする方法を説明する次のチュートリアルを見つけました ( http://python.net/crew/theller/ctypes/tutorial.html#loading-dynamic-link-libraries )。ただし、同じフォルダー内の C メソッドをインポート、使用、またはアクセスする簡単な解決策が見つかりませんでした。

Python を介して C メソッドにアクセスする方法を教えてもらえますか?

4

2 に答える 2

1

C メソッドをライブラリにコンパイルする必要があります。

Windows では、最初に .dll を Python が見つけられる場所に配置する必要があります。後で、このように ctypes ライブラリを呼び出します

from ctypes import *

Linux では、DLL ローダーの LoadLibrary メソッドを使用するか、コンストラクターを呼び出して CDLL のインスタンスを作成してライブラリをロードする必要があります。

cdll.LoadLibrary("libc.so.6")
libc = CDLL("libc.so.6")

呼び出し規約に応じて、cdll、windll、stdcall、または olecall のいずれかを使用します。たとえば、 stdcall 呼び出し規則関数がある場合は、次のようにします。

from ctypes import *
a = cdll.yourModule.MyIntFunction(9)

これらの関数は、他の Python callable と同じように呼び出すことができます。ctypes は、間違った数の引数や間違った呼び出し規則で関数を呼び出さないようにします。残念ながら、これは Windows でのみ機能します。

ctypes は、いくつかのプリミティブな C 互換タイプを定義します。完全なリファレンスは、http: //python.net/crew/theller/ctypes/tutorial.html#id4にあります。

于 2013-10-24T12:57:08.023 に答える