C1189: #error: WINDOWS.H уже включен. Приложения MFC не должны #include <windows.h>

0

Я создаю проект C++, который включает в себя 2 библиотеки, которые неявно включают в себя 2 раза windows.h:

  1. afxwin.h
  2. atlbase.h (не уверен)

Зная, что мне нужны эти две библиотеки в моем проекте, как мне обойти эту проблему?

Любая блестящая идея, пожалуйста?

  • 1
    afxwin.h ли вы afxwin.h до включения atlbase.h ? Согласно support.microsoft.com/kb/173974/en-us MFC включает в себя до ATL.
  • 0
    @halex, если я это сделаю, я получу странную ошибку, что я не смог найти решение, о котором я упоминал здесь: stackoverflow.com/questions/21720864/…
Теги:
mfc
atl

2 ответа

1
Лучший ответ

Попытайтесь скрыть указанные библиотеки, используя какой-либо интерфейс фасада, который они не видны в одном модуле компиляции.

  • 0
    Спасибо за ваш ответ Богдан. Не могли бы вы поподробнее?
  • 0
    @ user3289501: Я хотел бы создать два интерфейса, скажем, Lib1 и Lib2, и скрыть использование проблемных заголовков в их реализации. Допустим, afxwin.h предоставляет вам метод foo (), поэтому вы можете добавить метод Lib1 :: foo (), который использует оригинальный foo () внутри. Вообще говоря, любая операция, использующая проблемные библиотеки, может быть скрыта таким образом.
Показать ещё 3 комментария
0

Я столкнулся с той же проблемой при создании приложения Win32 в visual studio 2010. Решение, которое сработало для меня, было:

  1. Открыть stdafx.h
  2. Замените #include <windows.h> на #include <afxwin.h>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню