现在的位置: 首页 > 综合 > 正文

Microsoft Visual C++ 6.0 各类工程配置说明

2013年08月02日 ⁄ 综合 ⁄ 共 7230字 ⁄ 字号 评论关闭

1.   



基于

对话

框(

/



文档

/

多文档)的

MFC

程序

#include <afxdtctl.h>     // MFC support for Internet Explorer 4 Common

#include <afxwin.h>      // MFC core and standard components

#include <afxext.h>      // MFC extensions

#include <afxdisp.h>     // MFC Automation classes

#define VC_EXTRALEAN     // Exclude rarely-used stuff from Windows headers

stdafx.h
预编译头
文件

afxext.h
声明MFC
一些




CBitmapButton
CControlBar
CSplitterWnd
等)

afxdisp.h
中声明了Ole
的几个


COleException
COleVariant
等)

afxwin.h
声明MFC
封装的一些很基本的


CWnd
CView
CButton
CDC
等)afxdtctl.h
声明几个控件


CImageList
CMonthCalCtrl
CDateTimeCtrl
等)Controls

afxcmn.h
声明MFC
一些控件(CListCtrl
CProgressCtrl
CToolTipCtrl
等)

#include <afxcmn.h>     // MFC support for Windows Common Controls

#ifndef _AFX_NO_AFXCMN_SUPPORT
#endif // _AFX_NO_AFXCMN_SUPPORT

(1.1)Use MFC in a Shared DLL


Debug

版本:






WIN32,_DEBUG,_WINDOWS,_AFXDLL,_MBCS


编译
参数:/nologo
/MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D
"_AFXDLL" /D "_MBCS" /FR"Debug/" /Fp"Debug/ExeDlg.pch" /Yu"stdafx.h"
/Fo"Debug/" /Fd"Debug/" /FD /GZ      /c



接参数:/nologo /subsystem:windows /incremental:yes /pdb:"Debug/ExeDlg.pdb" /debug /machine:I386 /out:"Debug/ExeDlg.exe" /pdbtype:sept
Release

版本:






:与Debug
版本相比,将_DEBUG


成了NDEBUG


编译
参数:/nologo
/MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D
"_MBCS" /Fp"Release/ExeDlg.pch" /Yu"stdafx.h" /Fo"Release/"
/Fd"Release/" /FD /c



接参数:/nologo /subsystem:windows /incremental:no /pdb:"Release/ExeDlg.pdb" /machine:I386 /out:"Release/ExeDlg.exe"
(1.2)Use MFC in a Static Library

Debug

版本:





:与(1.1)
相比,少了_AFXDLL


编译
参数:将/MDd
(使用Run-time library: Debug Multithreaded DLL


成了/MTd
(使用Run-time library: Debug Multithreaded




接参数:与(1.1)
相同
Release

版本:


编译
参数/MD
(使用Run-time library: Multithreaded DLL


成了MT
(使用Run-time library: Multithreaded

***



注:以上
编译
/

接参数含

如下(更多的,

参考Msdn
):
/nologo

:抑制信息在

编译
或者



Output Window


出;      /MD
:运行

时库
使用MSVCRT.DLL
      /W3

编译时显


Warning

级别为
3
      /Gm
Enable Minimal Rebuild
,一


减少重
编译

选项
     /GX
Enable Exception Handling
        /ZI


Debug
信息保存的数据


文件.PDB
中;       /Od
Disable

码优
化;        /FR
:生成.SBR
文件,包含有符号信息;          /Fp
:命名生成的

预编译头
文件;        /Yu
:指定

预编译头
文件。
2.MFC DLL








预编译头
文件stdafx.h

#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include <afxwin.h>            // MFC core and standard components
#include <afxext.h>            // MFC extensions
#ifndef _AFX_NO_OLE_SUPPORT
#include <afxole.h>            // MFC OLE classes
#include <afxodlgs.h>          // MFC OLE dialog classes
#include <afxdisp.h>           // MFC Automation classes
#endif // _AFX_NO_OLE_SUPPORT
#ifndef _AFX_NO_DB_SUPPORT
#include <afxdb.h>               // MFC ODBC database classes
#endif // _AFX_NO_DB_SUPPORT
#ifndef _AFX_NO_DAO_SUPPORT
#include <afxdao.h>               // MFC DAO database classes
#endif // _AFX_NO_DAO_SUPPORT
#include <afxdtctl.h>           // MFC support for Internet Explorer 4 Common Controls

#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>               // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT

增加了两个OLE


文件和两个数据



文件
(2.1) Use MFC in a Shared DLL

Debug

版本:





WIN32,_DEBUG,_WINDOWS,_WINDLL,_AFXDLL,_MBCS,_USRDLL
,与MFC Exe
程序相比,增加了_WINDLL
_USRDLL


编译
参数:与MFC Exe
没有太大区





接参数:/nologo
/subsystem:windows /dll /incremental:yes /pdb:"Debug/MFCDll.pdb" /debug
/machine:I386 /def:"./MFCDll.def" /out:"Debug/MFCDll.dll"
/implib:"Debug/MFCDll.lib" /pdbtype:sept

MFC Exe
相比,增加了/dll


,以及/def:"./MFCDll.def"
/implib:"Debug/MFCDll.lib"

注意:其中
MFCDll

测试


目名字,非


DLL
名字。从

目的文件上看,



目比
MFC Exe


生一个
.def
的文件用于定
义导
出函数。
Release
版本与Debug
版本的区

别类


1
中的比


(上了_AFXDLL


)。
(2.2) Use MFC in a Static DLL


(2.1)
的区


,主要在使用的Run-time library


型上,与

1
中的比



3.MFC Extension DLL








预编译头
文件stdafx.h
内容与


2
相同。
(3.1) Use MFC in a Shared DLL

Debug

版本:





WIN32,_DEBUG,_WINDOWS,_MBCS,_AFXEXT,_WINDLL,_AFXDLL
,与


2
相比,将_USRDLL


成了_AFXEXT



编译
参数:与上述

目没有太大区




接参数:与
MFC DLL

目相似

Release

版本与
Debug
版本的区
别类



1
中的比

(上了
_AFXDLL


)。


(3.2) Use MFC in a Static DLL



似以上

目的比


(

注:以下


目均以Debug
版本


述。)
4.Win32 DLL








预编译头
文件stdafx.h:
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers                  
#include <windows.h>


现项
目入口函数DllMain

实现

(4.1) Not Using MFC






WIN32,_DEBUG,_WINDOWS,_MBCS,_USRDLL,WIN32DLLDEMO_EXPORTS
,与


2(MFC DLL)
相比,少了_WINDLL,_AFXDLL
,而


保留了_USRDLL
。另外,WIN32DLLDEMO_EXPORTS
自定




出宏。


编译
参数:没有太大区





接参数:kernel32.lib
user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll
/incremental:yes /pdb:"Debug/Win32DllDemo.pdb" /debug /machine:I386
/out:"Debug/Win32DllDemo.dll" /implib:"Debug/Win32DllDemo.lib"
/pdbtype:sept

MFC DLL


目相比,多了很多



接,少了/subsystem:windows
的定


(4.2) Use MFC in a Shared DLL






:与(4.1)
相比,增加了_WINDLL,_AFXDLL
的定




编译
参数:没有太大区





接参数:/nologo
/dll /incremental:yes /pdb:"Debug/Win32DllDemo.pdb"
/debug/machine:I386/out:"Debug/Win32DllDemo.dll"
/implib:"Debug/Win32DllDemo.lib" /pdbtype:sept

可以看出,(4.1)


接的很多

消失了,
这时


4


成了

似于

2
中的


置。



需要注意,

4
stdafx.h


包含了<windows.h>
,此


如果要用MFC


,需要自己加入MFC
的几个


文件(<afxwin.h>
<afxext.h>
等),并且将#include <windows.h>
DllMain
入口函数注


掉!
(4.3) Use MFC in a Static DLL


使用MFC DLL
的方式Shared
Static


的区

与上述



似,不再做比


5.Win32 Static Library








预编译头
文件stdafx.h(
可能没有


个文件):

不使用MFC

仅仅
#define WIN32_LEAN_AND_MEAN
,而如果使用MFC
,内容如下:
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include <afx.h>  
#include <afxwin.h>
(5.1) Not Using MFC
    





WIN32,_DEBUG,_MBCS,_LIB
,新出


了符号_LIB


编译
参数:/nologo
/MLd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB"
/Fp"Debug/W32StaPrehead.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD
/GZ    /c

注意到使用的Run-time library
参数


/MLd




参数:



目没有Link




,代替的是Library


,参数如下:/nologo /out:"Debug/W32StaPrehead.lib"
(5.2) Use MFC in a Shared DLL






WIN32,_DEBUG,_WINDOWS,_MBCS,_AFXDLL
,与


1
MFC Exe


置相同。


编译
参数:注意使用的Run-time library
参数


/MDd




参数:没有太大区


(5.3) Use MFC in a Static DLL



编译
参数:注意使用的Run-time library
参数


/MTd

6.Win32 Application








预编译头
文件stdafx.h
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <windows.h> // Windows Header Files:

#include <stdlib.h> #include <malloc.h> #include <memory.h> #include <tchar.h> // C RunTime Header Files



Win32
程序的入口函数WinMain






目,Project->settings->General


置使用MFC
的方式,一般

设为
Not Using MFC
,否

程序

构的改



大。从Not Using MFC
到使用MFC
的改



对连
接的

的影响

似于

4
Win32 DLL
)。
(6.1) Not Using MFC






WIN32,_DEBUG,_WINDOWS,_MBCS


编译
参数:/nologo
/MLd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB"
/Fp"Debug/W32StaPrehead.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD
/GZ    /c

注意到使用的Run-time library
参数


/MLd




接参数:kernel32.lib
user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo
/subsystem:windows /incremental:yes /pdb:"Debug/W32AppDemo.pdb" /debug
/machine:I386 /out:"Debug/W32AppDemo.exe" /pdbtype:sept
(6.2) Use MFC in a Shared DLL



编译
参数:注意使用的Run-time library
参数


/MDd

(6.3) Use MFC in a Static DLL



编译
参数:注意使用的Run-time library
参数


/MTd





1.MFC

的使用方式




情况
选择
Run-time library
的影响(
Debug
版本


)

Not Using MFC //MLd:Debug Single-Threaded

(静

态连
LIBCD.LIB



Use MFC in a Shared DLL //MDd: Debug Multithreaded DLL


动态连
MSVCRTD.DLL



Use MFC in a Static DLL //MTd:Debug Multithreaded

(静

态连
LIBCMTD.LIB



2.

如果不使用MFC
,在Link


一般会

接一系列Windows API


文件;如果使用MFC






就会
消失

3.Debug

版本一般会有_DEBUG




,而Release
版本




NDEBUG

4.

使用Shared MFC
Static MFC
相比,前者一般多一个_AFXDLL
的定


。默

使用的Run-time Library
也不一


,前者

/MDd
,后者

/MTd

5.MFC

的普通DLL


目比MFC
EXE


目,一般多_WINDLL
_USRDLL






接参数多一个/dll




MFC


DLL

目与
MFC
普通
DLL

目相比,




_USRDLL

成了
_AFXEXT



6.
不使用MFC
Win32 DLL
MFC DLL
相比,




少了_WINDLL
_AFXDLL
,而


保留了_USRDLL

7.

不使用MFC
的静

态库
_LIB





8.#include <afxwin.h>

#include <windows.h>
不能重


包含,前者用于MFC
程序,后者用于程序。
9.



了去掉Windows


文件中很少用到的定

,一般在stdafx.h
中,Win32
程序会定


#define WIN32_LEAN_AND_MEAN
,而MFC
程序会定


#define VC_EXTRALEAN



10.


本文的

用,改
变项
目参数

置,
实现
不同



目之




转换
,如下:

MFC Exe     <======> MFC DLL  

    ||                    ||
Win32 Exe <======> Win32 DLL


抱歉!评论已关闭.