ATL工程由VC6升级到2003后不能编译为Release的解决方法

大概是ATL的一个BUG吧,用VC6建的ATL工程如果使用了CRT(C运行库)中的函数,如strcpy或memset等,它将不能被编译为RELEASE。网上找了一些文章,都说原因是RELEASE的编译选项中定义了_ATL_MIN_CRT这个宏。它使C运行库被最小连接到目标文件,导致链接时报错没有main函数的错误。解决办法就是从编译选项中去掉_ATL_MIN_CTR。
但如果你和我一样,工程是从VC6升级来的,升级又后又做了很多改动,这时你会发现VS2003中找不到去掉这个宏的方法,至少我没找到 。这怎么办呢,难道要重建一遍工程吗?
既然不能在编译选项里去掉它,那就从代码里去。我们知道,编译选项里添加宏和在代码里定义#define的效果是一样的,那么就用#undef这个编译开关,把下面这句添加到stdafx.h中:
#undef _ATL_MIN_CRT
再编译,OK,一切解决。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值