【问题标题】:How to bind member function with std::function?如何将成员函数与 std::function 绑定?
【发布时间】:2016-03-24 13:21:18
【问题描述】:

我想绑定成员函数,但是好像失败了。

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:错误:未定义对“std::__throw_bad_function_call()”的引用 collect2: error: ld 返回 1 个退出状态

【问题讨论】:

标签: c++11


【解决方案1】:

您的链接似乎是 gcc 而不是 g++

不同之处在于g++ 也链接到libstdc++,而gcc 没有。

使用g++ 链接或将-lstdc++ 添加到链接器命令行。

【讨论】:

    猜你喜欢
    • 2012-08-22
    • 1970-01-01
    • 2013-06-12
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多