搜索
您的当前位置:首页正文

boost::asio和windows.h同时使用时出现error C1189: #error: WinSock.h has already been included报错的问题

来源:好走旅游网

问题描述

当我的main.cpp文件中写了#include <windows.h>,而工程的其他.cpp或.h文件中写了#include <boost/asio.hpp>#include <boost/asio/serial_port.hpp>之类的boost/asio库的时候,会出现如下报错

error C1189: #error: WinSock.h has already been included

解决方案

这个问题比较玄学,好几个方法可以解决该问题

解决方案1

在main.cpp中添加#include <boost/asio.hpp>#include <boost/asio/serial_port.hpp>注意:一定要在#include <windows.h>之前添加,不能在#include <windows.h>之后添加,如图所示

解决方案2

在main.cpp中添加#include <WinSock2.h>,也是一定要在#include <windows.h>之前添加,如图所示:

解决方案3

在main.cpp中将#include <windows.h>移动到所有#include之后,如图所示

总结

核心就是要将先进行#include <boost/asio.hpp>#include <boost/asio/serial_port.hpp>操作,然后再进行#include <windows.h>操作即可。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top