Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MDI приложение неверно настроенно 
:(
    Опции темы
nikitao
Дата 12.3.2006, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


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

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



Че то я туплю.Создал MDI ,отлинковал.Запускаю на виртуальной машине(вместе с mfc80.dll и msvcr80.dll и получаю бан.Пишет ,что приложение неправельно настроенно???Может надо еще что-то присоеденить(если копирую статически отлинкованый ,то все нормально).??? smile


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
CaptainFlint
Дата 12.3.2006, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 26.2.2003
Где: Москва

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



nikitao
В 2005 студии ввели так называемые side-by-side assemblies. Не знаю, зачем, видимо, посчитали, что нельзя так просто давать простым смертным распространять программки всего лишь добавлением нужных DLL - слишком просто, мол. Нет той запутанности, которая придаёт процессу создания и распространения программы необходимый шарм...

Почитай вот эту статью. В ней кое-что описано по этому поводу. Если вкратце: к этим двум DLL-кам нужно ещё добавить два файла манифеста, взятые из папки redist и обработанные напильником.


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
nikitao
Дата 13.3.2006, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


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

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



Цитата(CaptainFlint @ 13.3.2006, 00:51 Найти цитируемый пост)
Не знаю, зачем, видимо, посчитали, что нельзя так просто давать простым смертным распространять программки всего лишь добавлением нужных DLL - слишком просто, мол. Нет той запутанности, которая придаёт процессу создания и распространения программы необходимый шарм...

smile smile smile


CaptainFlint, спасибо!!!Буду разбираться


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Earnest
Дата 13.3.2006, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(CaptainFlint @ 12.3.2006, 23:51 Найти цитируемый пост)
Нет той запутанности, которая придаёт процессу создания и распространения программы необходимый шарм...

+1


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


Кот-программист
***


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

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



CaptainFlint, если не сложно,то опиши пожалйста процесс создания подробнее,а то у меня с английским проблемы smile


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
CaptainFlint
Дата 14.3.2006, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 26.2.2003
Где: Москва

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



nikitao
Первый способ - официальный: создать инсталлятор. Я с ним не разбирался, так что ничего сказать не смогу.
Второй способ попроще. Идёшь в папку \Program Files\Microsoft Visual Studio 8\VC\redist\x86\. Там выбираешь те подпапки, которые тебе нужны - по названию легко догадаться. (Например, для типичного MFC-приложения требуются папки Microsoft.VC80.CRT и Microsoft.VC80.MFC.)
Теперь определяешь, какие конкретно библиотеки из этих подпапок нужны твоему приложению. Опять-таки, типичная ситуация, когда нужны только msvcr80.dll (из папки CRT) и mfc80.dll (из папки MFC). Копируешь эти библиотеки в каталог к своей программе (скомпилённой, разумеется, в релизе), и вдобавок кидаешь туда manifest-файлы из всех подпапок, из которых копировал хотя бы один файл (в моём примере это будут два файла: Microsoft.VC80.MFC\Microsoft.VC80.MFC.manifest и Microsoft.VC80.CRT\Microsoft.VC80.CRT.manifest). Теперь открываешь эти файлы в текстовом редакторе, поддерживающем UTF-8 (обычный Блокнот в NT/2000/XP/2003 виндах её поддерживает) и в конце видишь список DLL-файлов в таком виде:
Код
    <file name="mfc80.dll"/>
    <file name="mfc80u.dll"/>
    <file name="mfcm80.dll"/>
    <file name="mfcm80u.dll"/>
Среди этих строчек удаляешь все те, которые не относятся к файлам, реально требуемым твоему приложению (соответственно, всё в том же примере останется одна запись в MFC-манифесте и одна - в CRT-манифесте). Всё! Итого в простейшем случае MFC-приложения получается комплект из 5-ти файлов:
1. Application.exe
2. msvcr80.dll
3. mfc80.dll
4. Microsoft.VC80.CRT.manifest
5. Microsoft.VC80.MFC.manifest
Этот комплект можно копировать на другой комп, где не установлена студия - всё будет запускаться.


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
nikitao
Дата 18.3.2006, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


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

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



Странно,но так как сказал CaptainFlint не получилось ,а вот через инстолятор все OK smile
Проблема решена,если не считать одной проблемки: я что-то намутил в проекте моего приложения,что теперь оно не хочет компилироваться в режиме Release::DLL(выдает ошибку про коректность в самой студии smile ),а все остальные режимы работают smile smile


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Ильнар
Дата 24.3.2006, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Смотрика заработало, приложение запустилось. У меня следующий вопрос: когда создаешь инсталятор надо будет указать куда копировать необходимые *.dll-ки, то есть эти две *.dll-ки обязательно попадут по назначению! но ведь тогда нарушается принцип самодостаточности exe-шника! нельзя ли как -нибудь в настройках проекта указать чтобы эта сволочь (VC8) все засунула в exe-файл? и кроме одного файла приложения на выходе больше ничего не было!
PM MAIL   Вверх
Earnest
Дата 24.3.2006, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Ильнар @ 24.3.2006, 16:59 Найти цитируемый пост)
но ведь тогда нарушается принцип самодостаточности exe-шника!

Сам придумал принцип? smile
Хочешь все свалить в EXE -выбери поддержку MFC как static libraries (как-то так). Это в настройках проекта.



--------------------
...
PM   Вверх
Ильнар
Дата 27.3.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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


 




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


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

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