2017-07-06 63 views
0

如何将由Python加载的二进制数据直接从文件传递到C++函数,并获取Cython模块中调用的数据指针和大小?从Python文件读取二进制数据并将其传递给C++函数

loadFromMemory(const void*, size_t) 

这大概是它会怎样看行纯Python:

with open('file.bin', 'rb') as f: 
    data = f.read() 
    loadFromMemory(data, len(data)) # How to do this in Cython? 

回答

0

你需要一个两步投先来个char*(其中用Cython可以从一个字符串轻松搞定),然后第二次重新解释,作为一个void*

loadFromMemory(<void*>(<char*>data), len(data)) 

这并不认为loadFromMemory不期望的指针函数调用后仍然有效( Cython不会为你自动管理内存,当data被销毁时它将被释放)。

(跳过投地char*,只是直接转换成一void*将采取Python对象的地址,这是不是你想要的)

相关问题