2016-03-23 3 views
1

Я хочу связать функцию-член, но кажется, что не удалось.Как связать функцию-член с std :: function?

Q4kDeviceSource.hh 
class Q4kDeviceSource { 
public: 
    void videoStreamCallback(QIPCamStreamCbType streamCbType, uint32_t streamId, uint8_t *buffer, size_t bufferSize); 
。。。 
} 

typedef std::function<void(QIPCamStreamCbType cbType, uint32_t streamId, 
         uint8_t* buffer, size_t bufferSize)> 
         StreamCallback; 

Q4kDeviceSource.cpp 
。。。 
StreamCallback videoElementryCb = std::bind(&Q4kDeviceSource::videoStreamCallback, this, 
     std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4); 

videoElementryCb(QIPCamStreamCbType::QIPCAM_STREAMCBTYPE_NORMAL,id,NULL,0); 
。。。 

построить не удалось

./prebuilts/ndk/9/sources/cxx-stl/gnu-libstdc++/4.8/include/functional:2463: Ошибка: неопределенная ссылка на «станд: : __ throw_bad_function_call()» collect2: ошибка: л.д. возвращается 1 выход статус

+0

https://stackoverflow.com/questions/12942538/undefined-symbol-std-throw-bad-function-call – melak47

ответ

1

Похоже, вы связываете с gcc вместо g++.

Разница в том, что g++ также ссылки в libstdc++, тогда как gcc нет.

Любая ссылка с g++ или добавьте -lstdc++ в вашу линкеровую командную строку.

Смежные вопросы