我使用的libusb到與USB設備進行交互。我創建了一個類,一個成員函數將接收來自設備的輸入並處理它。我正在使用異步api。現在libusb_fill_bulk_transfer()函數調用拋出一個編譯錯誤:如何通過回調函數與libusb批量傳輸函數在C++類
void MyDeviceClass::on_connectButton_clicked()
{
int r; //for return values
ssize_t cnt; //holding number of devices in list
r = libusb_init(&ctx); //initialize the library for the session we just declared
if(r < 0) {
qDebug()<<"Init Error "<<r<<endl; //there was an error
return;
}
...
...
...
libusb_fill_bulk_transfer(transfer_in, dev_handle, USB_ENDPOINT_IN,
inBuffer, LEN_IN_BUFFER,readDataFromBuffer,NULL,0);
libusb_submit_transfer(transfer_in);
QtConcurrent::run (this,&MyDeviceClass::eventThread);
}
編譯器建議使用& MyDeviceClass :: readDataFromBuffer作爲函數指針,但仍然拋出一個錯誤。我嘗試使用靜態成員,甚至靜態非成員函數,但都是徒勞的。請幫助我將回調傳遞給此功能。我正在使用Qt,可能不會喜歡使用boost庫。 請注意,libusb_fill_bulk_transfer(...)在MyDeviceClass的成員函數中調用。
好吧,所以它需要是__stdcall。 – Pete