2012-08-12 78 views
0

我試圖建立一個程序,可以讀取和寫入串行端口。 目前我正在使用與boost :: asio一起使用的包裝類。 (http://gitorious.org/serial-portBoost :: asio - UnregisterWaitEx'還沒有被聲明

我碰到win_object_handle_service.ipp一堆錯誤(從升壓ASIO)
錯誤消息我得到的是在http://pastebin.com/MtcC61cb

此外,在AsyncSerial.hpp文件從一個串口圖書館 我得到行103錯誤:

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

沒有什麼在編譯器錯誤日誌,但ECL IPSE報道說:

  1. 的boost ::綁定是模糊的
  2. 'ASIO :: io_service對象::運行'

無效超負荷我不知道如果以上是有效的錯誤,或如果它只是Eclipse的索引愚蠢



我的問題是:
任何人都可以幫助弄清楚爲什麼我得到這個錯誤消息,以及如何讓我的程序編譯?

我也歡迎有不同串行庫的建議。不過,我需要它是跨平臺的。

我正在用MinGW 4.7.1(32位)編譯windows 7 x64。

+0

好吧,顯然我在谷歌真的很糟糕。 http://boost.2283326.n4.nabble.com/boost-asio-UnregisterWaitEx-RegisterWaitForSingleObject-has-not-been-declared-td4633963.html 的修復程序是定義視窗版本-D_WIN32_WINNT = 0x0501 -DWINVER = 0x0501。 數字,我提出問題後立即找到答案。 – DanChianucci 2012-08-12 22:12:50

+0

1)你的pastebin鏈接已經死了。 2)您可以發佈自己的問題的答案,並接受它。如果沒有其他人發佈正確的答案並且您自己找到答案,這是可以接受的做法。 (顯然,如果別人發佈了您解決的答案,請不要這樣做。) – 2012-09-13 03:38:09

+0

Downvote for pastebin。這個想法是爲了保留這裏的知識以便分享未來的問題 - 不要在鏈接到期時立即獲得對他人無用的快速個人幫助。 – Cookie 2012-10-30 12:55:54

回答

4

我有這個問題從boost examples

編譯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)); 

而且編譯錯誤去離開

0

我發現要解決這些歧義,你需要關閉Eclipse的添加編譯錯誤:

項目屬性 - > C/C++常規 - >代碼分析。

打開Use project settings

然後禁用有關Eclipse的錯誤,例如。歧義。