我已经搜索过,但没有找到一个有意义的解释,比如它的作用、机制,以便我能够理解它。一个“有意义的解释”的例子是,有很多在线材料解释_DEBUG
预处理器,如何打开将允许使用assert
等。
MSDN页面#1为Visual Studio 6.0构建MFC DLL的构建设置说这不是针对1)常规DLL,静态链接到MFCrequired,而是针对2)常规DLL,使用共享MFC DLL,或者3)扩展DLL所需的。但是没有进一步的解释。
MSDN页面#2 AFXDLL版本简要提到:
您可以通过构建应用程序来使用其中一个AFXDLL库,这些库包含了MFC在多个运行应用程序中可以共享的DLL中。有关AFXDLL名称的表格,请参见DLL:命名约定。
注意:默认情况下,MFC应用程序向导创建一个AFXDLL项目。要改为使用MFC代码的静态链接,请在MFC应用程序向导中设置“在静态库中使用MFC”选项。在Visual C++标准版中不提供静态链接。
但我甚至不确定这个AFXDLL
是否与_AFXDLL
预处理器相关。
Stackoverflow帖子Unexplainable error "Please use the /MD switch for _AFXDLL builds"和#error Please use the /MD switch for _AFXDLL builds解释了/MT
或/MTd
与_AFXDLL
冲突,但这与MSDN页面#1相同,没有新的内容。
有人能解释一下吗?
_AFXDLL
预处理器是什么意思?最初的动机是什么?- 它如何影响编译或链接?
- 它是否已经过时?
_AFXDLL
预处理器是否与AFXDLL
库相关?实际上,所谓的“AFXDLL库”是什么?