提升Asio串口问题

我在Windows系统上使用CodeBlocks,并下载了Boost,编译并设置了我的IDEvariables和构build选项。 我已经成功地使用其他boost库,现在我需要在读取和写入串行端口的程序上工作。

我不能得到任何我试图为asio串口编译的例子。 例如,下面的代码会产生一个编译错误:

#include <iostream> #include <boost/asio.hpp> #include <boost/asio/serial_port.hpp> #include <boost/thread.hpp> int main() { boost::asio::io_service io_service; boost::asio::serial_port port(io_service); return 0; } 

这是上面代码的构build日志:

 Compiling: main.cpp In file included from C:\Dev\boost_1_47_0/boost/thread/win32/thread_data.hpp:12, from C:\Dev\boost_1_47_0/boost/thread/thread.hpp:15, from C:\Dev\boost_1_47_0/boost/thread.hpp:13, from C:\Users\bjune\Documents\CodeBlocks\hellow\main.cpp:4: C:\Dev\boost_1_47_0/boost/thread/win32/thread_heap_alloc.hpp:59: warning: inline function 'void* boost::detail::allocate_raw_heap_memory(unsigned int)' declared as dllimport: attribute ignored C:\Dev\boost_1_47_0/boost/thread/win32/thread_heap_alloc.hpp:69: warning: inline function 'void boost::detail::free_raw_heap_memory(void*)' declared as dllimport: attribute ignored C:\Users\bjune\Documents\CodeBlocks\hellow\main.cpp: In function 'int main()': C:\Users\bjune\Documents\CodeBlocks\hellow\main.cpp:13: error: 'serial_port' is not a member of 'boost::asio' C:\Users\bjune\Documents\CodeBlocks\hellow\main.cpp:13: error: expected ';' before 'port' C:\Dev\boost_1_47_0/boost/system/error_code.hpp: At global scope: 

任何build议?

Solutions Collecting From Web of "提升Asio串口问题"

boost / asio / serial_port_base.hpp文件(有点简化):

 #if defined(BOOST_ASIO_HAS_IOCP) || !defined(BOOST_WINDOWS) # define BOOST_ASIO_HAS_SERIAL_PORT 1 #endif 

所以BOOST_ASIO_HAS_SERIAL_PORT在Windows中只有BOOST_ASIO_HAS_IOCP也是true。

然后,从boost / asio / detail / win_iocp_io_service_fwd.hpp

 #if defined(BOOST_WINDOWS) #if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400) // Define this to indicate that IOCP is supported on the target platform. # define BOOST_ASIO_HAS_IOCP 1 #endif #endif 

所以,如果我正确地跟着它,你需要定义_WIN32_WINNT到0x0400或以上来启用它。