VS2005下DLL配置差异,设备版和Win32版比较
2010-01-19 14:34
295 查看
// 设备版
_DEBUG
DEBUG
_WINDOWS
_USRDLL
_WIN32_WCE=$(CEVER)//从C/C++->Command Line选项里面可以看到类似_WIN32_WCE=0x500,WinCE5.0
UNDER_CE
WINCE
WIN32SMARTDEVICE_EXPORTS
$(ARCHFAM)
$(_ARCHFAM_)
_UNICODE
UNICODE
//Win32版
_DEBUG
_WINDOWS
_USRDLL
WIN32
WIN32_EXPORTS
stdafx.h中定义
// 设备版
#define WINVER _WIN32_WCE
//Win32版
#ifndef WINVER // Allow use of features specific to Windows XP or later.
#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows.
#endif
append
=================================
WINVER是Windows版本号
Windows Server 2003
WINVER>=0x0502
Windows XP
WINVER>=0x0501
Windows 2000
WINVER>=0x0500
Windows NT 4.0
WINVER>=0x0400
Windows Me
WINVER>=0x0500
Windows 98
WINVER>=0x0410
Windows 95
WINVER>=0x0400
================================
Compiler _MSC_VER value
-------------------- -----------------------
C Compiler version 6.0 600
C/C++ compiler version 7.0 700
Visual C++, Windows, version 1.0 800
Visual C++, 32-bit, version 1.0 800
Visual C++, Windows, version 2.0 900
Visual C++, 32-bit, version 2.x 900
Visual C++, 32-bit, version 4.0 1000
Visual C++, 32-bit, version 5.0 1100
Visual C++, 32-bit, version 6.0 1200
Visual C++, 32-bit, version 2002 1300
Visual C++, 32-bit, version 2003 1310
Visual C++, 32-bit, version 2005 1400
Embedded Visual C++, 32-bit,version 4.0 Cross 1200 - 1202
Visual C++, 32-bit, version 2008 1500
=====================================
3.实例解说
01) 根据_MSC_VER值判断当前的编译环境.
#if _MSC_VER >= 1400
// this is Visual C++ 2005
#elif _MSC_VER >= 1310
// this is Visual c++ .NET 2003
#elif _MSC_VER > 1300
// this is Visual C++ .NET 2002
#endif
02) #else if 和 #elif 的细微差别
#if _MSC_VER < 1202
//EVC 4.0 complier is cross 1200 - 1202
#else if _MSC_VER >= 1400
//Visual C++ 2005 complier is 1400
#else
//Visual C++ 2005 complier is 1400
#endif
这段预编译代码在Evc4.0和visual studio 2005中编译会出错,提示错误为"unexpected #else".此时只要将"#else if"置换成"#elif"即可:
#if _MSC_VER < 1202
//EVC 4.0 complier is cross 1200 - 1202
#elif _MSC_VER >= 1400
//Visual C++ 2005 complier is 1400
#else
//Visual C++ 2005 complier is 1400
#endif
===========================================================
判断当前CPU类型
#ifdef _X86_
//x86
#endif
#ifdef _MIPS_
//Mips
#endif
#ifdef _ARM_
//Arm
#endif
_DEBUG
DEBUG
_WINDOWS
_USRDLL
_WIN32_WCE=$(CEVER)//从C/C++->Command Line选项里面可以看到类似_WIN32_WCE=0x500,WinCE5.0
UNDER_CE
WINCE
WIN32SMARTDEVICE_EXPORTS
$(ARCHFAM)
$(_ARCHFAM_)
_UNICODE
UNICODE
//Win32版
_DEBUG
_WINDOWS
_USRDLL
WIN32
WIN32_EXPORTS
stdafx.h中定义
// 设备版
#define WINVER _WIN32_WCE
//Win32版
#ifndef WINVER // Allow use of features specific to Windows XP or later.
#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows.
#endif
append
=================================
WINVER是Windows版本号
Windows Server 2003
WINVER>=0x0502
Windows XP
WINVER>=0x0501
Windows 2000
WINVER>=0x0500
Windows NT 4.0
WINVER>=0x0400
Windows Me
WINVER>=0x0500
Windows 98
WINVER>=0x0410
Windows 95
WINVER>=0x0400
================================
Compiler _MSC_VER value
-------------------- -----------------------
C Compiler version 6.0 600
C/C++ compiler version 7.0 700
Visual C++, Windows, version 1.0 800
Visual C++, 32-bit, version 1.0 800
Visual C++, Windows, version 2.0 900
Visual C++, 32-bit, version 2.x 900
Visual C++, 32-bit, version 4.0 1000
Visual C++, 32-bit, version 5.0 1100
Visual C++, 32-bit, version 6.0 1200
Visual C++, 32-bit, version 2002 1300
Visual C++, 32-bit, version 2003 1310
Visual C++, 32-bit, version 2005 1400
Embedded Visual C++, 32-bit,version 4.0 Cross 1200 - 1202
Visual C++, 32-bit, version 2008 1500
=====================================
3.实例解说
01) 根据_MSC_VER值判断当前的编译环境.
#if _MSC_VER >= 1400
// this is Visual C++ 2005
#elif _MSC_VER >= 1310
// this is Visual c++ .NET 2003
#elif _MSC_VER > 1300
// this is Visual C++ .NET 2002
#endif
02) #else if 和 #elif 的细微差别
#if _MSC_VER < 1202
//EVC 4.0 complier is cross 1200 - 1202
#else if _MSC_VER >= 1400
//Visual C++ 2005 complier is 1400
#else
//Visual C++ 2005 complier is 1400
#endif
这段预编译代码在Evc4.0和visual studio 2005中编译会出错,提示错误为"unexpected #else".此时只要将"#else if"置换成"#elif"即可:
#if _MSC_VER < 1202
//EVC 4.0 complier is cross 1200 - 1202
#elif _MSC_VER >= 1400
//Visual C++ 2005 complier is 1400
#else
//Visual C++ 2005 complier is 1400
#endif
===========================================================
判断当前CPU类型
#ifdef _X86_
//x86
#endif
#ifdef _MIPS_
//Mips
#endif
#ifdef _ARM_
//Arm
#endif
相关文章推荐
- Windows 7 64bit和Visual Studio 2010下的64位与32位程序配置,dll使用,与性能初步比较
- 在VS2005下配置手机设备仿真器访问局域网
- Opencv2.0 lib和dll的编译获取过程 以及 vs2005,vs2008配置过程
- windows下xampp安装配置memcached-1.2.6-win32-bin, 及php_memcache.dll(20090703-5.3)下载
- VS2005不能新建Win32 智能设备项目
- Python配置OpenCV时报错:ImportError DLL load failed: %1 不是有效的 Win32 应用程序
- VS2005下如何新建一个WINCE设备的DLL工程
- webstorm中配置Eslint的两种方式及差异比较详解
- VS2005 Win32 dll 只生产dll,不生成lib
- VS2005下如何新建一个WINCE设备的DLL工程
- 在vs2005中win32控制台应用程序中加载动态链接库(.dll)文件
- linux中配置文件的差异比较及补丁更新
- VS2005创建win32 dll的项目向导
- 为什么有时出现VS2005不能新建Win32 智能设备项目(转)
- VS2005环境下C#调用C++ DLL 联调(win32及wince)
- VS2005下如何新建一个WINCE设备的DLL工程
- Opencv2.0 lib和dll的编译获取过程 以及 vs2005,vs2008配置过程
- VS2005不能新建Win32 智能设备项目 (转)
- 使用expect和cvs来给华为设备做配置比较
- Linux下.so-->Win32下dll中的一个平台差异