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

本文详细介绍了在使用ACE库时遇到的VS2010系统函数冲突问题,包括错误原因分析及解决方法。特别强调了在编译ACE以及在VS2010上配置ACE时需要避免重复包含Windows头文件,以防止宏定义冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

http://blog.youkuaiyun.com/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

 

 

转载于:https://www.cnblogs.com/kazvvv/p/4642078.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值