7
A
回答
10
我一直檢查符號_MFC_VER被定義。
這是正在使用0x0700 MFC的版本號= 7.0
這是在「預定義宏」在MSDN
0
_AFX
通常用於MFC項目定義的符號。
3
我已經檢查的Visual Studio 2013年,在原來的項目只針對Win32的控制檯,所以我必須在第二次添加MFC支持(不使用項目嚮導)。以下是我的發現:
宏_MFC_VER在afxver_.h中定義,由afx.h包含。因此,如果您不直接/間接地在.cpp文件中包含afx.h,則沒有定義_MFC_VER宏。例如,在項目中包含一個不包含afx.h的源.cpp,該文件將被編譯爲而不包含 _MFC_VER宏的定義。因此,使用C++代碼(例如外部庫)來檢測MFC庫的使用情況並可選擇支持MFC庫是沒有用的。
如果您手動打開使用MFC(選擇Solution Explorer中的項目,比點擊右鍵,配置屬性 - >常規 - >使用MFC的),你有兩種可能性:
- A)選擇「在共享DLL中使用MFC」選項。這實際上更新了命令行參數,將_AFXDLL的定義添加到預處理器宏列表中。 B)選擇「在靜態庫中使用MFC」選項。
- B)選擇「在靜態庫中使用MFC」選項。這實際上刪除了定義的_AFXDLL宏,但沒有添加宏定義,因此如果實際使用了MFC,什麼都不會告訴你。
所以,我的測試活動中,只有一個模式可以有效地使用,如果MFC庫下建設項目包括或不明白。我維護一個支持多種平臺(Mac OSx,WinX控制檯,WinX MFC,iOS,Unix,Android)的C++跨平臺庫並使MFC具有動態DLL是透明地檢測MFC存在的唯一方法。例如:
#if defined(_AFXDLL)
# include <afx.h>
#endif
顯然,您可以在項目預處理器列表中手動添加宏定義(_AFX)。
相關問題
- 1. 使用預處理器檢測iPhone 5
- 2. 在預處理器中檢測ARM-64?
- 3. 如何在C++預處理器中檢測g ++和MinGW?
- 4. 如何在頭文件中使用預處理器檢查?
- 5. 檢測iPad的預處理器指令
- 6. 如何檢測類型是C中預處理器的指針?
- 7. 如何檢測預處理器中的X32 ABI或環境?
- 8. 如何檢測com.apple.compilers.llvm.clang.1_0作爲預處理器宏?
- 9. 檢測空參數在預處理宏
- 10. 檢測預處理器中的MOVBE可用性?
- 11. 在J2ME項目中未檢測到預處理器塊(Netbeans 6.9.1)
- 12. 在預處理器中檢測-xarch選項?
- 13. 檢測在MFC
- 14. 使用預處理器
- 15. 使用預處理器
- 16. 如何在預處理器中使用sizeof和模板參數?
- 17. 如何在React中使用LESS預處理器Create-React-APP
- 18. 如何在mirthconnect中使用預處理器
- 19. 如何在目標c中使用預處理器
- 20. 如何在C預處理器宏中使用#?
- 21. 如何在MVC aspx頁面中使用預處理器指令
- 22. 如何在方法聲明中使用預處理器宏?
- 23. 如何在C預處理器中使用'##'添加Integer?
- 24. 如何在Beanshell預處理器中使用__StringFromFile函數
- 25. 用於檢測iPhone平臺的內置預處理器令牌
- 26. 用於檢測MSVC C運行時庫的預處理器宏
- 27. 如何在CWnd中處理wm_print消息(使用MFC)?
- 28. 檢測處理器數
- 29. 如何在批處理文件中檢測多個監視器
- 30. 如何使用GNU C預處理器預定義的宏?
我也這麼認爲,但是對於Win32庫項目(創建時沒有「MFC支持」選項)啓用「在動態庫中使用MFC」時,未定義此宏。 – peterchen 2009-07-28 21:37:37
@peterchen表示,如果MFC作爲動態庫選項處於活動狀態,則_AFX未定義,而是_AFXDLL。 – Mouze 2015-04-28 07:33:18