如何使用ctypes,python将字符串参数传递给C++函数
Posted
技术标签:
【中文标题】如何使用ctypes,python将字符串参数传递给C++函数【英文标题】:How to pass string parameters to C++ function using ctypes, python 【发布时间】:2016-08-30 02:46:12 【问题描述】:我有一个 C++ DLL 库。一个函数如下所示。
Python 中的 DLL 导入是正确的。
int _ParseLogin2Resp(const std::string& username,
const std::string& password,
char szErr[1024]);
其实我已经尝试了很多方法来传递参数。我知道 C++ std::string
和 char *
之间的区别。
1.使用c_char_p()和byref()
username = ctypes.c_char_p("username")
_ParseLogin2Resp(ctypes.byref(username),...)
2.使用create_string_buffer()
username = ctypes.create_string_buffer("username")
_ParseLogin2Resp(username,...)
但是函数ERROR返回
用户名或密码为空。
所以我找不到任何将字符串参数传递给我的函数的解决方案。
我的问题是。
是否有可能我可以传递正确的参数以按预期调用我的函数,或者我必须重写我的 dll 库以使函数正常工作?
【问题讨论】:
写一个接受char*的c函数,在这个函数中调用你需要的cpp函数。 【参考方案1】:Python 文档说 ctypes 提供了 C 兼容的数据类型,最好在你的 DLL 中使用 c 风格的 API 接口。
【讨论】:
以上是关于如何使用ctypes,python将字符串参数传递给C++函数的主要内容,如果未能解决你的问题,请参考以下文章
Python ctypes:如何将 ctypes 数组传递给 DLL?
将 FILE * 从 Python / ctypes 传递给函数