タグ付けされた質問 「ctypes」

12
PythonでのCライブラリのラッピング:C、Cythonまたはctypes?
PythonアプリケーションからCライブラリを呼び出したいのですが。API全体をラップするのではなく、自分のケースに関連する関数とデータ型のみをラップします。それを見ると、私は3つの選択肢があります。 Cで実際の拡張モジュールを作成します。おそらくやり過ぎです。また、拡張の記述を学習するオーバーヘッドを回避したいと思います。 Cythonを使用して、CライブラリからPythonに関連パーツを公開します。 Pythonですべてをctypes行い、外部ライブラリとの通信に使用します。 2)と3)のどちらが良い選択かわかりません。3)の利点は、それctypesが標準ライブラリの一部であり、結果のコードが純粋なPythonになることです。ただし、その利点が実際にどれほど大きいかはわかりません。 どちらを選択しても、長所/短所はありますか?どちらのアプローチをお勧めしますか? 編集:すべての回答に感謝します。同様のことをしたいと考えているすべての人に役立つリソースを提供します。もちろん、決定はまだ1つのケースに対して行われることになっています。「これは正しいことです」という種類の答えはありません。私自身のケースでは、おそらくctypesを使用しますが、他のプロジェクトでCythonを試すことも楽しみにしています。 正解は1つではないため、1つを受け入れることはいくぶん恣意的です。私はFogleBirdの回答を選択しました。これはctypesに対するいくつかの優れた洞察を提供し、現在、最も投票された回答でもあるからです。ただし、概要を理解するためにすべての回答を読むことをお勧めします。 再度、感謝します。
284 python  c  ctypes  cython 

3
ctypes-初心者
私は、PythonライブラリにCライブラリを「ラッピング」するタスクを持っています。この件に関して、ドキュメントは非常にあいまいです。彼らは、上級のpythonユーザーだけがctypesを実装することを期待しているようです。まあ私はpythonの初心者であり、助けが必要です。 一歩一歩手助けが素晴らしいでしょう。 だから私は私のcライブラリを持っています。私は何をしますか?どのファイルをどこに置きますか?ライブラリをインポートするにはどうすればよいですか?Pythonに「自動ラップ」する方法があるかもしれないと読んだことがありますか? (ちなみに、私はpython.netでctypesチュートリアルを実行しましたが、機能しません。つまり、残りの手順を実行できるはずだと彼らが思っているのです。 実際、これは私が彼らのコードで得るエラーです: File "importtest.py", line 1 >>> from ctypes import * SyntaxError: invalid syntax 私は本当にこれについていくつかの段階的なヘルプを使うことができました!ありがとう〜
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.