2017-07-06 152 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對象的地址,這是不是你想要的)

相關問題