将字节数组传递给接受空指针的 C++ 函数

n. *_* m. 5 python boost

我正在使用 boost::python 导出一些需要void*. 他们在内部将其解释为原始内存(字节数组)。想readwrite一些非常特殊用途的装置。

如何将 Python 传递bytearray给这样的函数?

我试过使用,ctypes.c_void_p.from_buffer(mybytearray)但这与函数的签名不匹配。

这是最小的例子:

#include <boost/python.hpp>

void fun_voidp(void*) {}

BOOST_PYTHON_MODULE(tryit) {
    using namespace boost::python;
    def("fun_voidp", fun_voidp);
}
Run Code Online (Sandbox Code Playgroud)

在蟒蛇方面:

import tryit
import ctypes
b = bytearray(100)
tryit.fun_voidp(b) # fail
tryit.fun_voidp(ctypes.c_void_p.from_buffer(b)) # fail
tryit.fun_voidp(ctypes.c_void_p.from_buffer(b).value) # fail
Run Code Online (Sandbox Code Playgroud)

seh*_*ehe 2

我非常愿意修复函数原型以char*与最后一个 python 行一起使用。

没有理由void*在 C++ 中使用。我理解 API 是否支持,但用您自己的函数包装它应该不难。