开发环境1:vs2010+\boost_1_50_0+mysql+sqlite ,
开发环境2:使用标准 Windows 库+使用多字节字符集
错误现象: 编译报如下错误
e:\boost_1_50_0\boost\asio\detail\socket_types.hpp(22): fatal error C1189: #error : WinSock.h has already been included
错误原因:
程序中增加l包含有Windows.h头文件,而Windows.h头文件又包含了WinSock.h这个东西
解决过程:
1, 查找哪里包含了Windows.h
结果:#include "MySQL.h" 和SQlite.h"中包含了windows.h头文件 。不方便去除,放弃
2, 在 "stdafx.h" 设置 "#define WIN32_LEAN_AND_MEAN" 。可以在编译时,不编译mfc库相关。
效果: "MySQ.h"中报了一堆错误。放弃吧。
3,没办法了,调整程序头文件引用顺序。
将"MySQL.h" 和SQlite.h"放置在#include <boost/asio.hpp> 后面。
效果:编译通过。
心得:没有办法的时候,调整程序头文件引用顺序也是很管用的,你也试试吧!
boost\asio fatal error C1189: #error : WinSock.h has already been included错误处理
最新推荐文章于 2023-12-27 20:32:42 发布