【发布时间】:2013-05-15 08:45:04
【问题描述】:
我是 SWIG 的新手,如果我的问题已记录在案,请随时发布链接,我会仔细阅读。
我有一个采用以下形式的 C 函数:
int myFunc(char *output, const char *input)
我生成了 Python 包装器,并尝试使用以下方法调用此函数(在 Python 中):
m=""
n="valid input string"
myFunc(m,n)
这只是打印 (int) 返回码,而 m 仍然是 ""。我做错了什么?
谢谢!
【问题讨论】:
-
我认为您可能需要将
m传递到带有byRef(m)docs.python.org/2/library/ctypes.html#ctypes.byref 的函数中 -
请记住,Python 中的字符串是不可变的。一旦你用
m=""创建它,你就不能改变它的内容。正如 Haz 建议的那样,您可能需要使用 ctypes 创建一个 char 数组,并将其传递给“byRef”。或者您可以修改 myFunc 以分配一个 char 数组并返回它而不是 int。 -
只是问一个愚蠢的问题,
myFunc()实际上,做对了吗?您确认它有效吗?