我是Python的新手并且也嵌入了它。我有一个问题:
我的python模块中有一个函数接收用 ctypes.create_string_buffer(size)创建的缓冲区,并用来自某个内存地址的内容填充它:
echo [output text]."<br>";
when using "echo", or instead use fwrite...
fwrite([output text]."\n");
This will output HTML newline in place of "\n".
如何使用(char *)缓冲区调用此方法?我想从python中收到我的C ++缓冲区。
答案 0 :(得分:0)
如果您只想调用Python函数ctypes.create_string_buffer(size)
,您可以轻松地在C ++端镜像Python编码:
static PyObject* create_string_buffer(unsigned long size) {
PyObject *ctypes = PyImport_ImportModule("ctypes");
if (!ctypes) return 0;
PyObject *buf = PyObject_CallMethod(ctypes, "create_string_buffer", "k", size);
Py_DECREF(ctypes);
return buf;
}
如果您想使用除unsigned long
之外的其他类型的尺寸,则还需要更改PyObject_CallMethod中的format
。例如,O
用于PyObject*
。有关完整格式列表,请参阅Building values的文档。