2016-05-03 20 views
2

​​を使用して、Pythonの入力型をC言語にキャストするPythonの関数をC++ .dllから呼び出す方法を知っています。これは基本的に関数本体がC言語への型キャストと対応する.dll関数呼び出しを含むPythonで関数シグネチャを再作成します。C++のDLLをPythonでプログラムでラップする方法

私は現在、C++ .dllファイルのセットを持っています。各ライブラリには、多くの関数が含まれています。その一部はオーバーロードされています。私は、これらのファイルのそれぞれのためのPythonインターフェイスを書くことが任されています。私の現在の方法は、 "私が持っているハンマーを使用する"ことであり、それぞれの機能を実行し、対応するPythonラッパーを素敵に作成しています...これは、.dllの各関数のAPIドキュメントとコーディングそれらを一つずつ上げる。私の本能は、これについてもっと効率的な方法があるかもしれないと私に伝えています。

私の質問は次のとおりです。Windows C++ .dllとのインターフェイス方法はありますか?各機能に対応するラッパーを作成する必要はありませんか?ありがとう。

+0

ラッパーモジュールを書き込む方が簡単な場合があります。 [Boost Python](http://www.boost.org/doc/libs/1_60_0/libs/python/doc/html/index.html)。 –

+0

[SWIG](http://www.swig.org)は巨大な規模で使いやすいかもしれませんが、インタフェースファイルを準備する必要があります。 –

+1

[Cython](http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html)もC++をサポートしています。 – eryksun

答えて

2

Cythonを使用してラッピングをお勧めします。 Cythonでは、C/C++コードを(少しの定型文に加えて)非常に小さな変更で直接使用することができます。大きなライブラリをラップするには、Ctypesのような余分なラッピング作業を最小限に抑えて、何かを取得してすぐに実行するのが簡単なことがよくあります。 Cythonがより良いスケールになったのも私の経験でした... CtypesではなくCythonを立てるためのフロントエンドの作業が増えましたが、それは私の考えではより保守的であり、あなたが暗示するコードのプログラム的な生成に役立ちます。

関連する問題