C ++ Embedded Python和create_string_buffer

时间:2015-06-06 12:10:39

标签: python c++ arrays buffer

我是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 ++缓冲区。

1 个答案:

答案 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的文档。