预 定 义 :与(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 。