对于一个静态Win32库,我怎样才能检测出任何一个 "Use MFC" 选项是否已设置?
例如:
#ifdef ---BuildingForMFC---
....
#else
...
#endif
对于一个静态Win32库,我怎样才能检测出任何一个 "Use MFC" 选项是否已设置?
例如:
#ifdef ---BuildingForMFC---
....
#else
...
#endif
我一直在检查是否定义了符号“_MFC_VER”。
它是正在使用的MFC版本号,0x0700 = 7.0。
它位于MSDN中的“预定义宏”中。
宏_MFC_VER定义在afxver_.h中,并由afx.h包含。因此,如果您没有在.cpp文件中直接/间接包含afx.h,则不会定义_MFC_VER宏。例如,在项目中包含一个不包括afx.h的源.cpp文件,该文件将编译 WITHOUT _MFC_VER宏的定义。因此,它对于适应c ++代码(例如外部库)以检测MFC库的使用并选择性地支持MFC库是无用的。
如果手动打开MFC的使用(选择解决方案资源管理器中的项目,然后右键单击,配置属性 ->常规 -> MFC使用),有两种可能性:
因此,在我的测试活动期间,只有模式A可以有效地用于了解正在构建的项目中是否包括MFC库。
我维护一个支持多平台(Mac OSx,WinX控制台,WinX MFC,iOS,Unix,Android)的C ++跨平台库,并启用具有动态DLL的MFC是透明检测MFC存在的唯一方法。例如:
#if defined(_AFXDLL)
# include <afx.h>
#endif
_AFX
符号通常用于 MFC 项目。