У меня есть решение MySolution в виде диалогового интерфейсного окна, которое я откомпилировал и создал Debug .exe-файл. Этот файл нормально запускается как из среды разработки Visual Studio 2012, так и самостоятельно. Решение MySolution делится на проекты MyProject1, MyProject2, ..., MyProjectN.
Но я решил на основе этого решения создать также и Release exe.-файл. Для этого я в окне среды разработки в Отладка — Свойства MySolution — Свойства конфигурации поставил "Активная (Release)". После этого я перестроил моё решение.
В результате у меня высветились ошибки:
1) в различных .h-файлах и .cpp-файлах появились ошибки:
error C1083: Не удается открыть файл включение:
MyProject1\file1.h
error C1083: Не удается открыть файл включение:
MyProject2\file2.h
...
error C1083: Не удается открыть файл включение:
MyProjectN\fileN.h
2) в файле afxv_w32.h:
error C1189: #error: WINDOWS.H already included. MFC apps must not #include <windows.h>
--это в файле afxv_w32.h в строке:
#ifdef _WINDOWS_
#error WINDOWS.H already included. MFC apps must not #include <windows.h>
#endif
Что это означает? Как исправить ошибку--как сделать так, чтобы Release .exe-файл компилировался и собирался?
1613 г. = 2024 г.
Здравствуйте, RussianFellow, Вы писали:
RF>В результате у меня высветились ошибки:
RF>1) в различных .h-файлах и .cpp-файлах появились ошибки:
RF>RF>error C1083: Не удается открыть файл включение:
RF>MyProject1\file1.h
Тут, похоже, в проекте настройки путей INCLUDE для Debug и Release конфигураций разные.
RF>2) в файле afxv_w32.h:
RF>RF>error C1189: #error: WINDOWS.H already included. MFC apps must not #include <windows.h>
А вот это засада. Бывало такое. Где-то в коде закралась строка вида #include <Windows.h>, причём напару с директивой #ifndef _DEBUG
Самое печальное, что приблизительно 400 майкрософтовских заголовочных файлов содержат этот "#include <Windows.h>". Тут только методом "народного тыка". Смотреть при компиляции какого файла происходит обнаружение, что подключён Windows.h и начать в заголовочном и файле исходников методично комментить include'ы, смотреть после чего ошибка исчезнет. Возможно придётся и часть кода в этих файлах закомментить, чтобы сообщений об ошибках было меньше. А то любит компилятор выдать "слишком много ошибок, компиляция остановлена".
Можно, конечно, временно и файл Windows.h подправить, добавив в начало "#error Got you!". Но, боюсь, где-то в своих глубинах MFC вполне может инклюдить Windows.h
Коллеги, у меня теперь возникла другая проблема: проект, который благополучно компилировался, собирался, запускался и выполнялся в Debug-версии, при линковке (после компиляции) в Release-версии вдруг стал выдавать ошибку:
error LNK2001: неразрешенный внешний символ "_main" MSVCRT.lib (crtexe.obj)
Что это означает? Как сделать так, чтобы решение собиралось (линковалось) в Release-версии?
Я работаю в Visual Studio 2012.
1613 г. = 2024 г.
Здравствуйте, RussianFellow, Вы писали:
RF>Коллеги, у меня теперь возникла другая проблема: проект, который благополучно компилировался, собирался, запускался и выполнялся в Debug-версии, при линковке (после компиляции) в Release-версии вдруг стал выдавать ошибку:
RF>RF>error LNK2001: неразрешенный внешний символ "_main" MSVCRT.lib (crtexe.obj)
RF>Что это означает? Как сделать так, чтобы решение собиралось (линковалось) в Release-версии?
RF>Я работаю в Visual Studio 2012.
1) вот примерная тема:
https://ru.stackoverflow.com/questions/89603/%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-%D0%9D%D0%B5%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9-%D0%B2%D0%BD%D0%B5%D1%88%D0%BD%D0%B8%D0%B9-%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB-main
2) применяй ENGLISH версию студии — скопировав ответ АНГЛИЙСКОЙ студии в строку поиска гугла, можно найти намного больше релевантных (читай — ПОЛЕЗНЫХ) ответов, чем при использовании русской версии...
3) Все-таки по-стараться под-напрячь собственную смекалку, прежде чем задавать вопрос здесь — на КЫВТ
Здешним товарищам отвечать вроде как и не трудно, однако — как возвысятся твои ЧСВ и самооценка, когда ударишь себя в грудь кулаком —
с гордыми словами:
— САМ дошёл до истины!!!