编译包含ace库的程序时,显示系统函数重定义问题

 window环境下编译ACE以及在vs2010上配置ACE

http://blog.csdn.net/luyafei_89430/article/details/8886623

 编写程序时需要注意的:

1 #include <iostream>
2 #include "ace\Log_Msg.h"
3 
4 int main(int argv, char *agrv[])
5 {
6     ACE_DEBUG((LM_INFO,"HELLO WORLD"));
7     system("PAUSE");
8     return 0; 

9 } 

 正常使用system函数时,都回包含Windows.h头文件,但是如果用ACE库,就不能再包含,因为ACE库中已经对window的一些系统函数进行的重新定义,如果再次包含则会提示类似如下错误: 

c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(91): warning C4005: 'AF_IPX' : macro redefinition
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(460) : see previous definition of 'AF_IPX'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(131): warning C4005: 'AF_MAX' : macro redefinition
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(479) : see previous definition of 'AF_MAX'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(168): warning C4005: 'SO_DONTLINGER' : macro redefinition
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(402) : see previous definition of 'SO_DONTLINGER'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(212): error C2011: 'sockaddr' : 'struct' type redefinition
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(485) : see declaration of 'sockaddr'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(390): error C2059: syntax error : 'constant'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(390): error C3805: 'constant': unexpected token, expected either '}' or a ','
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(524): warning C4005: 'IN_CLASSA' : macro redefinition

 

 

posted @ 2015-07-13 09:20  KAZVVV  阅读(487)  评论(0)    收藏  举报