0

我正在尝试构建一个能够读取和写入串行端口的程序。目前我正在使用一个与 boost::asio 一起使用的包装类。( http://gitorious.org/serial-port )

我从 win_object_handle_service.ipp 收到一堆错误(来自 boost asio)
我收到的错误消息位于http://pastebin.com/MtcC61cb

此外,在 SerialPort 库的 AsyncSerial.hpp 文件中,第 103 行出现错误:

thread t(boost::bind(&asio::io_service::run, &pimpl->io))

编译器错误日志中没有任何内容,但 eclipse 报告说:

  1. boost::bind 不明确
  2. 'asio::io_service::run' 的无效重载

我不确定以上是否是有效的错误,或者它只是 eclipse 的索引器是愚蠢的



我的问题是:
谁能帮助弄清楚为什么我会收到此错误消息,以及如何让我的程序编译?

我也欢迎对不同的串行库提出建议。但是我需要它是跨平台的。

我正在运行使用 MinGW 4.7.1(32 位)编译的 Windows 7 x64。

4

2 回答 2

4

我在从boost 示例中编译 chat_client 时遇到了这个问题

它是:

boost::thread t(boost::bind(&boost::asio::io_service::run, &io_service));

我将其更改为使用显式演员表:

boost::thread t(boost::bind((unsigned long int (boost::asio::io_service::*)())&boost::asio::io_service::run, &io_service));

编译错误消失了

于 2012-08-31T16:40:10.303 回答
0

我发现要解决这些歧义,您需要关闭 Eclipse 添加的编译错误:

项目属性 -> C/C++ 常规 -> 代码分析。

打开Use project settings

然后禁用相关的 Eclipse 错误,例如。模棱两可。

于 2014-08-06T06:04:22.003 回答