2016-08-30 50 views
0

私はC++ DLLライブラリを持っています。 1つの機能を以下に示します。ctypes、pythonを使用してC++関数に文字列パラメータを渡す方法

PythonでのDLLインポートは正しいです。

int _ParseLogin2Resp(const std::string& username, 
        const std::string& password, 
        char szErr[1024]); 

実際、私は多くの方法でパラメータを渡しました。私はC++ std::stringchar *の違いを知っています。 c_char_p 1.Use

()と

username = ctypes.c_char_p("username") 
_ParseLogin2Resp(ctypes.byref(username),...) 

)(ByRefの2.Useのcreate_string_buffer()

username = ctypes.create_string_buffer("username") 
_ParseLogin2Resp(username,...) 

しかし、関数ERRORは

ユーザ名またはパスワードが返されます空の。

文字列パラメータを関数に渡すことができませんでした。

私の質問はです。

正しいパラメータを渡して関数を呼び出す可能性がありますか、関数を正しく動作させるためにDLLライブラリを書き直す必要がありますか?

+0

char *を受け付けるc関数を記述します。この関数では、必要なcpp関数を呼び出します。 – neohope

+0

正解!ありがとう〜 – ddming000

答えて

0

Pythonのdocによると、ctypesはC互換のデータ型を提供しているため、DLLにcスタイルのAPIインターフェイスを使用する方が良いと言えます。

関連する問題