2014-02-12 46 views
0

我建立一個C++項目,該項目包括2個庫誰隱含包括2次windows.hC1189:#error:WINDOWS.H已包含在內。 MFC應用程序不能#包括<windows.h>

  1. afxwin.h
  2. atlbase.h(不知道)

知道我需要這兩個庫到我的項目中,我該如何解決這個問題?

有什麼好主意嗎?

+1

待辦事項在包含'atlbase.h'之前加入'afxwin.h'?根據http://support.microsoft.com/kb/173974/en-us mfc包括應該在atl之前。 – halex

+0

@halex,如果我這樣做,我會得到一個奇怪的錯誤,我找不到一個解決方案,我已經提到這裏:http://stackoverflow.com/questions/21720864/c2039-catlservicemodulet-is- not-a-member-ofl – user3289501

回答

1

嘗試使用某些外觀界面來隱藏所提到的庫,這些界面包含在同一編譯單元中不可見。

+0

感謝您的迴應波格丹。你會更詳細地介紹它嗎? – user3289501

+0

@ user3289501:我會創建兩個接口,讓我們說Lib1和Lib2,並隱藏使用有問題的標題在他們的實現。假設afxwin.h爲您提供了方法foo(),因此您可以添加方法Lib1 :: foo(),它使用裏面的原始foo()。一般來說,使用有問題的庫的任何操作都可以用這種方式隱藏。 – Bogdan

+0

非常感謝Bogdan! – user3289501

0

我在Visual Studio 2010爲我工作溶液建立一個Win32應用程序時遇到了同樣的問題是:

  1. 打開stdafx.h中
  2. 更換#include <windows.h>#include <afxwin.h>