Boost Asio - boost::bind 导致程序崩溃
Boost Asio - boost::bind causes program to crash
当我尝试使用 boost::bind
作为async_read_some
函数调用的参数编译我的程序时,我遇到了问题。
如果我在下面使用此代码,我的程序在达到 async_read_some
时会崩溃。
socket_.async_read_some(boost::asio::buffer(message_, 1024),
boost::bind(
&Session::print_message, self,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred)
);
void print_message(boost::system::error_code& ec, std::size_t length)
{
}
但是如果我删除boost::bind
并将其替换为 lambda 函数,它将正常工作。
socket_.async_read_some(boost::asio::buffer(message_, 1024),
[this, self](boost::system::error_code& ec, std::size_t length)
{
if (!ec)
{
std::cout << "made it" << std::endl;
}
std::cout << "Error: " << ec.message() << std::endl;
}
这是我在编译时收到的错误
'R boost::_mfi::mf2<R,Session,boost::system::error_code &,size_t>::operator ()(T *,A1,A2) const': cannot convert argument 2 from 'Arg1' to 'A1'
如果需要代码,请告诉我。
正如@rafix07所指出的,程序崩溃了,因为我没有为我的print_message
处理程序输入正确的参数。
需要切换:
void print_message(boost::system::error_code& ec, std::size_t length)
自
void print_message(const boost::system::error_code& ec, std::size_t length)
相关文章:
- 程序崩溃并显示"std::out_of_range"错误
- 试图创建流或fopen时程序崩溃
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 如何找出应用程序崩溃的原因 - Win 10 LTSB
- 操纵安卓相机的深度图导致应用程序崩溃
- 为什么当我尝试搜索双链表中第一个数据条目之外的数据时,程序崩溃了?
- DLL Made with CMake 使程序崩溃
- 程序崩溃使用boost::asio
- 调用 free() 有时会导致程序崩溃
- 邮件加密程序崩溃
- 调用 java 的回调() 时应用程序崩溃.由于 detatchThread 而获得运行时错误
- 比较迭代器会使程序崩溃,而不会在自定义气泡排序实现中出现错误
- For 循环在尝试读取数组 c++ 时程序崩溃
- 即使有 0 个错误,Getter 似乎也会使程序崩溃
- Windows桌面程序保存您的计算机会话 - 基于程序崩溃时的恢复会话
- 无法访问的代码如何导致我的程序崩溃?
- 矢量迭代器在尝试调用函数时使我的程序崩溃
- QCompleter set模型使应用程序崩溃
- 使用唯一指针调用函数会使我的程序崩溃
- 删除SDL_PollEvent时程序崩溃