Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться, WINDOWS.H already included 
:(
    Опции темы
FApe
Дата 3.7.2009, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



Здравствуйте помогите советом кто может ... второй день не дает покоя проблема

проблема такая : есть проект созданный в MSVS.net 2005 в свойствах проекта стоит Not Using Precompiled Headers иначе компилятор будут сильно ругаться - это увы данность ... 
мне нужно создать подключаемую по #include библиотеку где некоторые
классы (мои классы) будут содержать в себе классы MFC (например CButton) как только прописываю в файле заголовка #include <afxwin.h> где содержится описание типов данных компилятор начинает ругаться говорить что WINDOWS.H already included.  MFC apps must not #include <windows.h>


как научить понимать компилятор что я буду использовать классы MFC ? какой файл и где подключать ? 
PM MAIL   Вверх
FApe
Дата 3.7.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



Граждане: гугу, спецы, и просто толковые люди ... подскажите может есть какие мысли по поводу моей проблемы ? 
если объяснил коряво отвечу на все уточняющие вопросы 
SOS
PM MAIL   Вверх
Earnest
Дата 3.7.2009, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Прекомпилированные заголовки сюда отношения не имеют. Это можно и поменять, если надо.
Что касается заголовочных файлов, то MFC-зависимые модули должны подключать  <afxwin.h> вместо <windows.h>.

Цитата(FApe @  3.7.2009,  14:45 Найти цитируемый пост)
создать подключаемую по #include библиотеку

Совсем не поняла: что это за библиотека такая? include работает на уровне препроцессора, сливая файлы перед компиляцией. А библиотеку делает линкер.


--------------------
...
PM   Вверх
Cheloveck
Дата 3.7.2009, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



Цитата(FApe @  3.7.2009,  14:45 Найти цитируемый пост)
проблема такая : есть проект созданный в MSVS.net 2005 в свойствах проекта стоит Not Using Precompiled Headers иначе компилятор будут сильно ругаться - это увы данность ... 

Это не данность, а... В свойствах проекта выставляешь stdafx.pch, а в свойствах stdafx.cpp - create precompiling header и всё работает после компиляции stdafx.cpp. 

stdafx.h ф студию.


--------------------
user posted image
PM Jabber   Вверх
FApe
Дата 5.7.2009, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



Цитата(Earnest @ 3.7.2009,  19:37)
Что касается заголовочных файлов, то MFC-зависимые модули должны подключать  <afxwin.h> вместо <windows.h>.

Цитата(FApe @  3.7.2009,  14:45 Найти цитируемый пост)
создать подключаемую по #include библиотеку

Совсем не поняла: что это за библиотека такая? include работает на уровне препроцессора, сливая файлы перед компиляцией. А библиотеку делает линкер.

Это видимо я не корректно написал под "библиотекой" я конешно же имел ввиду "модуль"


объясню на примере

создаю два файла -> test.hpp и test.cpp добавляю их в проект ... так ?
в файле test.hpp заголовок класса в test.cpp его реализация ... так ? все как всегда

допустим в файле test.hpp следующий текст

Код

class MyClass
{
private:
    CButton* pMyButton;
}


компилятор будет ругаться так как об типе CButton ничего не знает пока я не подключу к файлу <afxwin.h> что совершенно справедливо ... так ?

добавляю в файл test.hpp строчку  #include <afxwin.hpp> где этот класс описан ... так ?
 
получаю ошибку -"windows.h уже подключен"

это все происходит если в свойствах проекта стоит "Not Using Precompiled Headers"

могу победить эту ошибку если ставлю в свойствах проекта "Using Precompiled Headers" и добавляя к файлу test.hpp строчку #include "stdafx.h" ... но трагедия заключается в том что проект создан (до меня еще) ТАК что скомпилировать его в режиме "Using Precompiled Headers" я НЕ МОГУ так как
подключенные к проекту ранее файлы этого позволить себе не могут (вот что я имел ввиду под фразой "это увы данность")

что мне делать ? как подключить к проекту MFC-зависимый файл в режиме "Not Using Precompiled Headers" ? вот в чем вопрос !!!


PM MAIL   Вверх
Cheloveck
Дата 5.7.2009, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



Код

#pragma once

во все хедеры в первой строке.


--------------------
user posted image
PM Jabber   Вверх
FApe
Дата 5.7.2009, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



попробую в понедельник, проект на работе )
PM MAIL   Вверх
FApe
Дата 6.7.2009, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



проблема разрешилась ) оказывается в недрах проекта уже была строчка #include <windows.h> ... 

Спасибо всем кто откликнулся !!! как затуплю снова к вам приду за советом ;)

Это сообщение отредактировал(а) FApe - 6.7.2009, 10:07
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0452 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.