从vc6升级到vc7的一些问题及解决方法

从vc6升级到vc7的一些问题及解决方法
1. 编译时出现: WINVER not defined. Defaulting to 0×0501 (Windows XP and Windows .NET Server)
这个问题是因为没有指定工程要使用的平台 SDK的版本。
Minimum system required
Macros to define
Windows Server 2003 family
_WIN32_WINNT>=0×0502
Windows XP
_WIN32_WINNT>=0×0501
Windows 2000
_WIN32_WINNT>=0×0500
Windows NT 4.0
_WIN32_WINNT>=0×0400
Windows Me
_WIN32_WINDOWS=0×0490
Windows 98
_WIN32_WINDOWS>=0×0410
Internet Explorer 6.0
_WIN32_IE>=0×0600
Internet Explorer 5.01, 5.5
_WIN32_IE>=0×0501
Internet Explorer 5.0, 5.0a, 5.0b
_WIN32_IE>=0×0500
Internet Explorer 4.01
_WIN32_IE>=0×0401
Internet Explorer 4.0
_WIN32_IE>=0×0400
Internet Explorer 3.0, 3.01, 3.02
_WIN32_IE>=0×0300
解决办法:
属性, C/C++,命令行,附加项中添加 /D_WIN32_WINNT=0×0501 (因为我是在xp下工作的所以是0×0501)
 
2. Link时出现: LINK : warning LNK4075: 忽略”/EDITANDCONTINUE”(由于”/INCREMENTAL:NO”规范)
这个问题是因为在 vc6中,工程使用的增量编译。
解决办法:
属性,链接器,常规,启动增量链接 选择 是 (INCREMENTAL)
 
3. 编译时出现: warning C4129: “U” : 不可识别的字符转义序列
error C3847: 通用字符中的错误符号;必须使用十六进制数字
原因:为开发全球通用的应用程序, .NET Framework 使用 Unicode UTF-16(Unicode 转换格式,16 位编码形式)来表示字符。在某些情况下,.NET Framework 在内部使用 UTF-8。引入通用字符名称的格式是 \u####\U########
解决办法:
//#include MAKEPATH(MAIN_IMAGE_PATH, FunUtil\\Unit_star.txt)
#include “..\\ImageData\\ML128160\\FunUtil\\Unit_star.txt”
 
4. 链接时出现: LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit 已经在 MSVCRTD.lib(MSVCR71D.dll) 中定义 等类似错误
原因:
Run-Time Library
•Run-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。
我们一般使用的Run-Time Library是C Run-Time Libraries。当然也有Standard C++ libraries。
C Run-Time Libraries实现ANSI C的标准库。VC安装目录的CRT目录有C Run-Time库的大部分源代码。 C Run-Time Libraries有静态库版本,也有动态链接库版本;有单线程版本,也有多线程版本;还有调试和非调试版本。
•动态链接库版本:
/MD Multithreaded DLL 使用导入库MSVCRT.LIB
/MDd Debug Multithreaded DLL 使用导入库MSVCRTD.LIB
•静态库版本:
/ML Single-Threaded 使用静态库LIBC.LIB
/MLd Debug Single-Threaded 使用静态库LIBCD.LIB
/MT Multithreaded 使用静态库LIBCMT.LIB
/MTd Debug Multithreaded 使用静态库LIBCMTD.LIB
若要使用此运行时库
请忽略这些库
单线程 (libc.lib)
libcmt.lib、 msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib
多线程 (libcmt.lib)
libc.lib、 msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib
使用 DLL 的多线程 (msvcrt.lib)
libc.lib、 libcmt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib
调试单线程 (libcd.lib)
libc.lib、 libcmt.lib、msvcrt.lib、libcmtd.lib、msvcrtd.lib
调试多线程 (libcmtd.lib)
libc.lib、 libcmt.lib、msvcrt.lib、libcd.lib、msvcrtd.lib
使用 DLL 的调试多线程 (msvcrtd.lib)
libc.lib、 libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib
解决方法:
属性,链接器,输入,忽略指定库 libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib (这是我需要忽略的,你可以根据你工程的实际情况选择。)

update(20060205):
5. 链接是出现不能打开 mfc4xx.lib的错误时,这是因为VC7对MFC的dll进行了升级。

解决办法:
属性,链接器,输入,附加依赖项 中 添加mfc71d.lib。

你可能感兴趣的:(从vc6升级到vc7的一些问题及解决方法)