C++ 嵌入式 Python 和 create_string_buffer

C++ Embedded Python and create_string_buffer

我是 Python 的新手,也是嵌入它的新手。我有一个问题:

我的 python 模块中有一个函数,它接收使用 ctypes.create_string_buffer(size) 创建的缓冲区,并用来自某个内存地址的内容填充它:

def get_mem(self, address, size, data):
    self.mem.read_ram_block(address, size, data)

我应该如何使用 (char *) 缓冲区调用此方法?我想用从 python.

收到的信息填充我的 C++ 缓冲区

如果您只想调用 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 as well. For example O is used for PyObject*. For a complete list of formats see the documentation for Building values 中的 format