小结: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

评论