状況
boost asioでserial通信ができない
環境
Visual Studio 2022
Windows 11
Boost 1.79
詳細
私はBoostのライブラリであるasioを用いて、シリアル通信を行おうと思っています。
b2ビルドでは以下のコマンドを実行し、Visual Studioでおそらく適切なリンクを行いました(少し自信がない)
>b2.exe --toolset=msvc-14.3 link=static runtime-link=shared,static install
次に以下の記事を参考に下記のコードを実行しました。
http://blog.livedoor.jp/k_yon/archives/52145222.html
cpp
1#include <boost/asio.hpp> 2#include <iostream> 3 4using namespace boost::asio; 5 6int main() 7{ 8 //if (argc != 2) { 9 // std::cerr << "Usage: SerialTest str" << std::endl; 10 // return 1; 11 //} 12 std::cout << "Start" << std::endl; 13 14 std::string wbuf = "kyounotekinkihahare"; 15 char rbuf[32]; 16 std::size_t length; 17 18 const char* PORT = "COM8"; 19 io_service io; 20 serial_port port(io,PORT); 21 port.set_option(serial_port_base::baud_rate(921600)); 22 port.set_option(serial_port_base::character_size(8)); 23 port.set_option(serial_port_base::flow_control(serial_port_base::flow_control::none)); 24 port.set_option(serial_port_base::parity(serial_port_base::parity::none)); 25 port.set_option(serial_port_base::stop_bits(serial_port_base::stop_bits::one)); 26 27 port.write_some(buffer(wbuf)); 28 length = port.read_some(buffer(rbuf)); 29 30 std::cout.write(rbuf, length); 31 32 return 0; 33}
これをビルドするとビルド自体は成功し、実行ファイルが生成されるのですが、
生成した実行ファイルを実行すると以下のようなMSVC++ ランタイムライブラリがエラーを吐きます。
Debug Error! abort() has been called
デバッガで例外を吐いている場所を探すと以下の場所でハンドルしていない例外を吐いているようです。
serial_port port(io,PORT);
C++ランタイムライブラリがエラーをはいているということで、Propertyのランタイムライブラリの設定のDLLを外して、boostのstaticライブラリをリンクしたりしたのですが、解決しませんでした。
教えてほしいこと
このエラーが起きている理由と具体的な解決方法を教えていただけないでしょうか?
ランタイムライブラリなどについてあまり詳しくなく申し訳ないのですが、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー