您的位置:首页 > 编程语言 > C语言/C++

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

2010-01-18 17:49 501 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: