boost\asio fatal error C1189: #error : WinSock.h has already been included错误处理

开发环境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> 后面。
             效果:编译通过。

心得:没有办法的时候,调整程序头文件引用顺序也是很管用的,你也试试吧!
   
          



你可能感兴趣的:(c,windows,socket,mfc,2010)