如何使用ctypes,python将字符串参数传递给C ++函数

时间:2016-08-30 02:46:12

标签: python c++ dll ctypes

我有一个C ++ DLL库。一个功能如下所示。

Python中的DLL导入是正确的。

self.age = aDecoder.decodeObject(forKey: "age") as? Int ?? aDecoder.decodeInteger(forKey: "age")

事实上,我已经尝试了很多方法来传递参数。我知道C ++ int _ParseLogin2Resp(const std::string& username, const std::string& password, char szErr[1024]); std::string之间的区别。

1.使用c_char_p()和byref()

char *

2.使用create_string_buffer()

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

但是函数ERROR返回

  

用户名或密码为空。

所以我找不到任何解决方案来将字符串参数传递给我的函数。

我的问题是。

我是否有可能传递正确的参数来按预期调用我的函数,或者我必须重写我的dll库以使函数正常工作?

1 个答案:

答案 0 :(得分:0)

Python doc says ctypes provides C compatible data types, it is better to use c style API interface in your DLL.