Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / MVS 2015 пустой MFC проект / 21 сообщений из 21, страница 1 из 1
06.01.2016, 21:08
    #39142854
kab18
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVS 2015 пустой MFC проект
Приведенный ниже код выдает следующие ругательства:
ОшибкиОшибка директива #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
06.01.2016, 21:48
    #39142874
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVS 2015 пустой MFC проект
kab18,
это ошибка конфигурации проекта, ты неверно используешь библиотеки, переведи на русский сообщения об ошибках и попытайся их понять.
вкратце, тебе нужно использовать CRT в виде DLL, и MFC в виде DLL.
...
Рейтинг: 0 / 0
06.01.2016, 22:25
    #39142886
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVS 2015 пустой MFC проект
kab18,

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

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

удачи вам
(круглый)
...
Рейтинг: 0 / 0
07.01.2016, 08:45
    #39142942
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVS 2015 пустой MFC проект
[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
07.01.2016, 18:32
    #39143080
kab18
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVS 2015 пустой MFC проект
Добавил строчку
Код: 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
07.01.2016, 18:43
    #39143084
Зимаргл
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVS 2015 пустой MFC проект
kab18,

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

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

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

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

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

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

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

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



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


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

Разница в поведении компилятора связана с тем что я создал 2 проекта с одинаковым кодом. 1-й как пустой Win32 проект с ручным заданием поддержки MFC- и он жалуется на отсутсвие dll. 2-й как проект dll Win32 с изначальной поддержкой библиотеки MFC и ручным изменением настройки проекта с dll на exe- он жалуется на отсутсвие обновления. Я так понял все таки нужно подключить к 1-проекту правильные MFC lib и dll, тогда может найдется где нибудь точное перечисление их имен, чтобы я мог поискать их на жестком и подключить к проекту? Я думаю что даже если я их и подключу далее компилятор выдаст ошибку об отсутсвии обновления. Я думал посмотреть подключаемые dll и lib во втором проекте, но они походу в него вшиты и не отображаются в проекте.
...
Рейтинг: 0 / 0
08.01.2016, 13:17
    #39143335
kab18
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVS 2015 пустой MFC проект
Вобщем вот что есть при компиляции во вкладке вывод:
Вывод 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
08.01.2016, 17:49
    #39143466
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVS 2015 пустой MFC проект
kab18,

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

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

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

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

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

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

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

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

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

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

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


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


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