关闭

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

1152人阅读 评论(0) 收藏 举报
大概是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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:231027次
    • 积分:2032
    • 等级:
    • 排名:千里之外
    • 原创:42篇
    • 转载:0篇
    • 译文:0篇
    • 评论:69条
    文章分类
    最新评论
    未分类