2011-08-16 18 views
0

私はWindowsシステムでCodeBlocksを使用しており、ブーストをダウンロードして、IDE変数とビルドオプションをダウンロードし、セットアップしました。私は正常に他のブーストライブラリを使用していたので、シリアルポートを読み書きするプログラムで作業する必要があります。ブーストAsioシリアルポートの問題

私は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; 

} 

これは、上記のコードのビルドログです:

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: 

何かアドバイスは? ブースト/ ASIO/serial_port_base.hppファイル(単純化されたビット)から

答えて

3

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

のでBOOST_ASIO_HAS_SERIAL_PORTがBOOST_ASIO_HAS_IOCPもtrueの場合にのみ、Windowsの真実です。

その後、ブースト/ ASIO /詳細/ 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 

だから、あなたはそれを可能にするために、上記の0x0400に_WIN32_WINNTを定義したりする必要があります。

関連する問題