VS2005下DLL配置差异,设备版和Win32版比较

来源:互联网 发布:java中string的存储 编辑:程序博客网 时间:2024/06/05 12:48

// 设备版

_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

原创粉丝点击