d:\microsoft visual studio\vc98\include\winsock2.h(99) : error C2011: 'fd_set' : 'struct' type redefinition
......(若干行winsock2.h)
d:\microsoft visual studio\vc98\include\ios.h(146) : error C2872: 'streambuf' : ambiguous symbol
d:\microsoft visual studio\vc98\include\ios.h(159) : error C2872: 'ostream' : ambiguous symbol
......(若干行ios.h)
d:\microsoft visual studio\vc98\include\istream.h(67) : error C2872: 'streambuf' : ambiguous symbol
d:\microsoft visual studio\vc98\include\istream.h(74) : error C2872: 'ios' : ambiguous symbol
......(若干行istream的)
d:\microsoft visual studio\vc98\include\istream.h(148) : fatal error C1003: error count exceeds 100; stopping compilation我用的头文件是#include <iostream>,#include <sstream>,#include <fstream>,并且我找过好像没有用using namespace std;
更加奇怪的是如果我把包含的头文件顺序换一下,
#include "a.h"
#include "b.h"
改为
#include "b.h"
#include "a.h"
竟然没有这些错误(不过有其他的库文件错误,IONA库的错误)

解决方案 »

  1.   

    是不是你在何处又包含了winsock.h这个头文件?
      

  2.   

    就这里包含了winsock.h和winsock2.h(下面的**是我的一个工程文件夹)
    E:\Work\**\include\ace\config-win32-common.h(445):#  include /**/ <winsock.h>
    E:\Work\**\include\ace\config-win32-common.h(425):#  include /**/ <winsock2.h>
      

  3.   

    就这里包含了winsock.h和winsock2.h(下面的**是我的一个工程文件夹)
    E:\Work\**\include\ace\config-win32-common.h(445):#  include /**/ <winsock.h>
    E:\Work\**\include\ace\config-win32-common.h(425):#  include /**/ <winsock2.h>
    ========================================
    虽然在一个文件中包含了两个头文件,但是好像不在相连的两行,应该是程序中做了什么宏判断之类的吧,是不是你的程序中对其处理不对?没有看到文件不知道实际情况!
    应该查看你的编译宏的定义和使用工程情况吧,主要还是相关的宏定义!
      

  4.   

    没有什么特别的编译宏啊
    WIN32,_DEBUG,_CONSOLE,_MBCS
      

  5.   

    include /**/ <winsock.h>
    include /**/ <winsock2.h>只能包涵一个!否则就会重定义
      

  6.   

    include /**/ <winsock.h>
    include /**/ <winsock2.h>只能包涵一个!否则就会重定义这个是ace这个包的问题,我不能修改他啊。
      

  7.   

    问题已经解决,
    首先是包含顺序,其次是ace版本老
    晚上过来结帐。