我试图通过使用Boosi::Python将C结构从C++传递到Python作为一个麻木数组。我知道有更简单的方法可以将C结构传递给python,但是我想使用numpy数组的原因是解决方案是反射模型的一部分,因此需要从字符串动态生成数据类型。在
我可以序列化将其作为字符串传递给python的结构并调用numpy.fromstring(),它成功地将其转换为numpy数组。但是,这并不是非常有效,因为将其转换为字符串会复制数据,而不是通过引用将其传递给python。在
例如:#include
using namespace boost::python;
struct MyRecord
{
uint32_t myInt;
char myString[4];
double myDouble;
};
class MyBaseClass
: public wrapper
{
public:
void myCallback(const MyRecord& data)
{
object func = get_override("myCallback");
if (func) {
std::string dataStr(reinterpret_cast(data), sizeof(data));
func(dataStr, "[('myInt','
}
}
};
BOOST_PYTHON_MODULE(example1)
{