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,一切解决。
阅读更多
文章标签: c
想对作者说点什么? 我来说一句

vc6升级到vs2010部分解决方法

2017年07月06日 274KB 下载

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭