powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / MVS 2015 пустой MFC проект
21 сообщений из 21, страница 1 из 1
MVS 2015 пустой MFC проект
    #39142854
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приведенный ниже код выдает следующие ругательства:
ОшибкиОшибка директива #error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d] Win32Project2 c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include\afx.h 24

Ошибка C1189 #error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d] Win32Project2 c:\program files (x86)\microsoft visual studio 14.0\vc\atlmfc\include\afx.h 24

Код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
#include "afxwin.h" // MFC Основные и стандартные компоненты

class CMainWnd : public CFrameWnd
{
public:
	CMainWnd();	// Конструктор по умолчанию
};

CMainWnd::CMainWnd()
{
	Create(NULL, L"Step1", WS_OVERLAPPEDWINDOW, rectDefault,
		NULL, NULL);	// Создать окно программы
}

class CMyApp : public CWinApp
{
public:
	CMyApp();			//конструктор по умолчанию
	virtual BOOL InitInstance();//стандартная инициализация
};

CMyApp::CMyApp() // конструктор главного класса приложения
{}

BOOL CMyApp::InitInstance() // стандартная инициализация
{
	m_pMainWnd = new CMainWnd();	// создать класс окна
	ASSERT(m_pMainWnd);	// проверить его правильность
	m_pMainWnd->ShowWindow(SW_SHOW);// Показать окно
	m_pMainWnd->UpdateWindow();	// Обновить окно
	return TRUE;		// Вернуть что все нормально
};

CMyApp theApp;	// запуск приложения


Я подозреваю, что необходимо подключить к проекту какие-то MFC dll или lib, но afxwin.h и требуемые для него библиотеки не ищутся на MSDN, было бы неплохо найти имена этих библиотек и поискать их на жестком. И да в настройках проекта я выставил использование MFC в общей DLL. Проект создавался как пустой Win32 по гайду .
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39142874
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18,
это ошибка конфигурации проекта, ты неверно используешь библиотеки, переведи на русский сообщения об ошибках и попытайся их понять.
вкратце, тебе нужно использовать CRT в виде DLL, и MFC в виде DLL.
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39142886
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18,

сдаётся мне, что в указанном гайде речь идёт не о 2015 студии, и даже не 2008, и даже что то младше шестёрки имхо конечно-же...

1) у Вас не получится прокатить овощем. придётся вникать и методом проб и ошибок + чтение умной литературы и форумов находить решения(обычно в любом материале существуют ошибки либо не точности).
2) вы зря выбрали пустой проект. если бы выбрали не пустой - то следующая вкладка визарда, вам бы предложила потрогать за титьку и мэфэцэ. только потом не адд главный си-пи-пи файлик, а тупо копи-паста в тот шаблон что сгенерился бы.
3) что можно сделать. вот тискайте на закладке джэнерал статик-не статик(в зависимости чего хотите и что не нравится компилятору)
4) внимательно вкуривайте закладки C++ и Link. Ищите поля которые задают указанные ключики в ошибке /Md

удачи вам
(круглый)
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39142942
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[d]Ошибка директива #error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]


тебе надо определить в проекте макрос
_AFXDLL


-D_AFXDLL
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39143080
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавил строчку
Код: plaintext
1.
#define _AFXDLL

теперь ошибки следующие:
LNK2019,1120Ошибка LNK2019 ссылка на неразрешенный внешний символ _WinMain@16 в функции "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) Win32Project2 C:\Users\Joanit\documents\visual studio 2015\Projects\Win32Project2\Win32Project2\msvcrtd.lib(exe_winmain.obj) 1

Ошибка LNK1120 неразрешенных внешних элементов: 1 Win32Project2 C:\Users\Joanit\documents\visual studio 2015\Projects\Win32Project2\Debug\Win32Project2.exe 1

Я так понимаю причина в отсутсвии функции WinMain(), но в приведенном в первом сообщении коде ее роль выполняет CMyApp(), который наследуется от CWinApp. Корявая замена CMyApp() на WinMain тоже ничего не дает, компилятор продолжает выдавать, приведенные выше ошибки.

Код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
#define _AFXDLL
#include "afxwin.h" // MFC Основные и стандартные компоненты


class CMainWnd : public CFrameWnd
{
public:
	CMainWnd();	// Конструктор по умолчанию
};

CMainWnd::CMainWnd()
{
	Create(NULL, L"Step1", WS_OVERLAPPEDWINDOW, rectDefault,
		NULL, NULL);	// Создать окно программы
}

class WinMain : public CWinApp
{
public:
	WinMain();			//конструктор по умолчанию
	virtual BOOL InitInstance();//стандартная инициализация
};

WinMain::WinMain() // конструктор главного класса приложения
{}

BOOL WinMain::InitInstance() // стандартная инициализация
{
	m_pMainWnd = new CMainWnd();	// создать класс окна
	ASSERT(m_pMainWnd);	// проверить его правильность
	m_pMainWnd->ShowWindow(SW_SHOW);// Показать окно
	m_pMainWnd->UpdateWindow();	// Обновить окно
	return TRUE;		// Вернуть что все нормально
};

CWinApp theApp;	// запуск приложения


Добавление в ресурсы проекта библиотеки msvcrtd.lib на которую он ругается несколько меняет ошибки:
Ошибки
Ошибка LNK2019 ссылка на неразрешенный внешний символ _WinMain@16 в функции "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) Win32Project2 C:\Users\Joanit\documents\visual studio 2015\Projects\Win32Project2\Win32Project2\msvcrtd.lib(exe_winmain.obj) 1

Ошибка LNK2019 ссылка на неразрешенный внешний символ __imp__RoInitialize@4 в функции ___scrt_initialize_winrt Win32Project2 C:\Users\Joanit\documents\visual studio 2015\Projects\Win32Project2\Win32Project2\msvcrtd.lib(utility_app.obj) 1

Ошибка LNK1120 неразрешенных внешних элементов: 2 Win32Project2 C:\Users\Joanit\documents\visual studio 2015\Projects\Win32Project2\Debug\Win32Project2.exe 1
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39143084
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kab18,

У тебя нет WinMain и не прилинкована библиотека MFC, где она есть.
Даже если ты используешь MFC DLL, есть парный ей .LIB

https://msdn.microsoft.com/ru-ru/library/bx5yfk7t.aspx
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39143108
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После того как поменял на верхней панели конфигурацию решения с debug на release код скомпилировался без ошибок в том виде в котором он представлен в уроке, без добавления каких-либо библиотек или dll-файлов. Все дело в отсутствии обязательного обновления KB2882822, которое я вручную удалял после установки Visual Studio, в силу объективной неприемлимости его нахождения на операционной системе. Судя по всему отсутствие этого обновления делает невозможным сборку MFC приложения в режиме debug (один раз отладчик выдал ошибку про отсутсвие какого-то концентратора и обновления), впоследствие еще поковырявшись в настройках проекта и добавив строку #define _AFXDLL компилятор перестал выдавать ошибки, но окно формы все равно не запускалось. В режиме Release все работает как часы.
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39143198
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kab18,

Бубен себе купи. Для Одекватной Оценки Объективной реальности.

Короче, ты не понимаешь пока что происходит.
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39143208
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18После того как поменял на верхней панели конфигурацию решения с debug на release код скомпилировался без ошибок...

ну а теперь, если хотите добить ситуацию, плавненько берите дебаг(или релиз - не важно) и ручками переделывайте в противоположный вариант(глазками смотрим ключики в строке компиляции-линковки). По одному потехонечку переносим. Вот где обломается - и надо рыть.

Обычно дэлеле ставятся-сносятся попарно(дебаг+релиз) и то инструментариями которые знают про это. Вряд-ли что то вам снесло половину(те которые оканчиваются на D) файлов.

Почему надо копать.
Вы же не знаете откуда берутся либы и дэлеле? и ослинные уши могут начать показываться когда начнёте что то более серьёзное чем хэйлохты мир!

удачи вам
(круглый)
ЗЫ
За одно и в настройках проектах будете ориентироваться.
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39143219
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18Добавил строчку
Код: plaintext
1.
#define _AFXDLL



да не, не define надо было делать, а кдючем компилятора макрос определить...
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39143220
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, случай летальный,лечению не подлежит...
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39143273
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну тогда подскажите литературу в которой описано как проект настраивать.
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39143277
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я и писал KB2882822. Если создавать какой то другой тип проекта то сообщение об ошибке не появляется, но приложение в режиме debug все равно не запускается.
Debug


Release
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39143320
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вобщем скорей всего я неправильно понял фразу про ключи компилятора:
LNK1561

Разница в поведении компилятора связана с тем что я создал 2 проекта с одинаковым кодом. 1-й как пустой Win32 проект с ручным заданием поддержки MFC- и он жалуется на отсутсвие dll. 2-й как проект dll Win32 с изначальной поддержкой библиотеки MFC и ручным изменением настройки проекта с dll на exe- он жалуется на отсутсвие обновления. Я так понял все таки нужно подключить к 1-проекту правильные MFC lib и dll, тогда может найдется где нибудь точное перечисление их имен, чтобы я мог поискать их на жестком и подключить к проекту? Я думаю что даже если я их и подключу далее компилятор выдаст ошибку об отсутсвии обновления. Я думал посмотреть подключаемые dll и lib во втором проекте, но они походу в него вшиты и не отображаются в проекте.
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39143335
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вобщем вот что есть при компиляции во вкладке вывод:
Вывод Release"Win32Project5.exe" (Win32). Загружено "C:\Users\Joanit\Documents\Visual Studio 2015\Projects\Win32Project5\Release\Win32Project5.exe". Символы загружены.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\ntdll.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\kernel32.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\KernelBase.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\user32.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\gdi32.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\lpk.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\usp10.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\msvcrt.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\advapi32.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\sechost.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\rpcrt4.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\sspicli.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\cryptbase.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\winspool.drv". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\shell32.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\shlwapi.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\ole32.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\oleaut32.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\oleacc.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\imm32.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\msctf.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\api-ms-win-core-synch-l1-2-0.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\uxtheme.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af\comctl32.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\dwmapi.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\ole32.dll". Невозможно найти или открыть PDB-файл.
"Win32Project5.exe" (Win32). Выгружено "C:\Windows\SysWOW64\ole32.dll"
"Win32Project5.exe" (Win32). Загружено "C:\Windows\SysWOW64\Amhooker.dll". Сборка модуля выполнена без символов.
Программа "[4560] Win32Project5.exe" завершилась с кодом 0 (0x0).

Вывод DebugСборка начата: проект: Win32Project5, Конфигурация: Debug Win32 ------
1> Source.cpp
1>c:\program files (x86)\microsoft visual studio 14.0\vc\atlmfc\include\afx.h(24): fatal error C1189: #error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39143466
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18,

вы явно не читаете ошибку, что пишут вам форточки.
Давайте я повторю...

запуск приложения бла-бла-бла win32project1.dll не является приложением Win32

что есть полная истина...
библиотеку вы не можете запустить как самостоятельное приложение.
Вы конечно-же под отладчиком можете протестировать отдельную дэ-ле-ле, но для этого нужен экзешник который позовёт её (скажем так это возможно, но это не ваш случай).

Резюме...
в релизе вы запускаете экзешник.
под дебагом дэлеле.
И задаёте вопрос, почему дескать мягкое не холодное...

(круглый)
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39143477
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18...Разница в поведении компилятора связана с тем что я создал 2 проекта с одинаковым кодом. 1-й как пустой Win32 проект с ручным заданием поддержки MFC- и он жалуется на отсутсвие dll. 2-й как проект dll Win32....

1) вам уже писали - не создавайте пустой проект, пока вы не знаете точно про его наполнение и настройки ключей. больше гимора для вас же.
2) "ручное задание поддержки MFC" - не понятно, что вы имеет ввиду. То, что в визарде вам дают методом отметки чекбоксов выбирать куча параметров - это "облегчалка" при генерации проекта не более(визард). В конечном итоге вы можете создать свой визард с одной большой кнопкой "Хочу". При созданном проекте у вас есть настройки самого проекта - вот именно их и надо кромсать(изучать) по первости, при этом не меняя ЦЕЛИ(т.е. собираете либо дэлеле либо экзешник - смотря что вам необходимо). Если при изменении настройки вы не понимаете что делаете - лезите в МСДН и вникаете нафига он нужен. Если буквы тяжело оседают в голове - спрашиваете на форуме. Но как правило МСДН будет более чем достаточно.
3) все остальные ваши умозаключения следуют из ошибочных предположений - посему не имеют место быть в принципе, от слова никак...

удачи вам
(круглый)
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39143487
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolobok0 "ручное задание поддержки MFC" - не понятно, что вы имеет ввиду. То, что в визарде вам дают методом отметки чекбоксов выбирать куча параметров - это "облегчалка" при генерации проекта не более(визард).
Проект->Свойства->Общие->Использование MFC. С точки зрения незнающего человека даже самый пустой проект созданный визардом создает малопонятное нагромождение непонятно как связанных файлов и кода в них.
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39143500
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18С точки зрения незнающего человека даже самый пустой проект созданный визардом создает малопонятное нагромождение непонятно как связанных файлов и кода в них.
Это маркетинг от МС. Пока пользователь делает правильные движения (создает проект в соответствии с тем что хочет в итоге), то все легко. Но стоит захотет сделать что-то неправильное (сменить тип готового проекта) то тут надо знание основ плюс знание устройства маркетинга от МС.

С одной стороны легко начать любому, с другой - высокий барьер между чайником и профи.
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39143700
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18...малопонятное нагромождение непонятно как связанных файлов и кода в них.

вы старайтесь идти от лёгкого к сложному.
для начала тупо добейтесь работоспособности(даже можно в код не заглядывать). главное компилиться, делает то что нужно - далее код изучать. ещё дальше - настройки изменять если треба.

т.е. идите от рабочего к хотелкам. тогда всегда у вас будет рабочий вариант и понятен путь как вы этого добились.

Вообще-то я порекомендую вам достаточно не плохую книгу:
Круглински "Программирование на VC++"
там именно про первые шаги, как просто получить результат, и самое главное вход в логику самой мэфэцэ.


удачи вам
(круглый)
...
Рейтинг: 0 / 0
MVS 2015 пустой MFC проект
    #39147117
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил проблему удалением из проекта, созданного визардом, всех файлов кроме stdafx.h, stdafx.cpp и добавлением собственного исполнительного файла.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / MVS 2015 пустой MFC проект
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]