我建立一個C++項目,該項目包括2個庫誰隱含包括2次windows.h
:C1189:#error:WINDOWS.H已包含在內。 MFC應用程序不能#包括<windows.h>
- afxwin.h
- atlbase.h(不知道)
知道我需要這兩個庫到我的項目中,我該如何解決這個問題?
有什麼好主意嗎?
我建立一個C++項目,該項目包括2個庫誰隱含包括2次windows.h
:C1189:#error:WINDOWS.H已包含在內。 MFC應用程序不能#包括<windows.h>
知道我需要這兩個庫到我的項目中,我該如何解決這個問題?
有什麼好主意嗎?
嘗試使用某些外觀界面來隱藏所提到的庫,這些界面包含在同一編譯單元中不可見。
感謝您的迴應波格丹。你會更詳細地介紹它嗎? – user3289501
@ user3289501:我會創建兩個接口,讓我們說Lib1和Lib2,並隱藏使用有問題的標題在他們的實現。假設afxwin.h爲您提供了方法foo(),因此您可以添加方法Lib1 :: foo(),它使用裏面的原始foo()。一般來說,使用有問題的庫的任何操作都可以用這種方式隱藏。 – Bogdan
非常感謝Bogdan! – user3289501
我在Visual Studio 2010爲我工作溶液建立一個Win32應用程序時遇到了同樣的問題是:
#include <windows.h>
與#include <afxwin.h>
待辦事項在包含'atlbase.h'之前加入'afxwin.h'?根據http://support.microsoft.com/kb/173974/en-us mfc包括應該在atl之前。 – halex
@halex,如果我這樣做,我會得到一個奇怪的錯誤,我找不到一個解決方案,我已經提到這裏:http://stackoverflow.com/questions/21720864/c2039-catlservicemodulet-is- not-a-member-ofl – user3289501