![]() |
|
![]() ![]() ![]() |
|
nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: нет Всего: 26 |
Че то я туплю.Создал MDI ,отлинковал.Запускаю на виртуальной машине(вместе с mfc80.dll и msvcr80.dll и получаю бан.Пишет ,что приложение неправельно настроенно???Может надо еще что-то присоеденить(если копирую статически отлинкованый ,то все нормально).???
![]() -------------------- Жизнь - печальная штука. |
|||
|
||||
CaptainFlint |
|
|||
![]() Искатель сокровищ ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 26.2.2003 Где: Москва Репутация: 7 Всего: 23 |
nikitao
В 2005 студии ввели так называемые side-by-side assemblies. Не знаю, зачем, видимо, посчитали, что нельзя так просто давать простым смертным распространять программки всего лишь добавлением нужных DLL - слишком просто, мол. Нет той запутанности, которая придаёт процессу создания и распространения программы необходимый шарм... Почитай вот эту статью. В ней кое-что описано по этому поводу. Если вкратце: к этим двум DLL-кам нужно ещё добавить два файла манифеста, взятые из папки redist и обработанные напильником. -------------------- Почему же, ё-моё, ты нигде не пишешь "ё"? -------------------- Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) |
|||
|
||||
nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: нет Всего: 26 |
![]() ![]() ![]() CaptainFlint, спасибо!!!Буду разбираться -------------------- Жизнь - печальная штука. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
+1 -------------------- ... |
|||
|
||||
nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: нет Всего: 26 |
CaptainFlint, если не сложно,то опиши пожалйста процесс создания подробнее,а то у меня с английским проблемы
![]() -------------------- Жизнь - печальная штука. |
|||
|
||||
CaptainFlint |
|
|||
![]() Искатель сокровищ ![]() ![]() Профиль Группа: Участник Сообщений: 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-файлов в таком виде:
1. Application.exe 2. msvcr80.dll 3. mfc80.dll 4. Microsoft.VC80.CRT.manifest 5. Microsoft.VC80.MFC.manifest Этот комплект можно копировать на другой комп, где не установлена студия - всё будет запускаться. -------------------- Почему же, ё-моё, ты нигде не пишешь "ё"? -------------------- Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) |
|||
|
||||
nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: нет Всего: 26 |
Странно,но так как сказал CaptainFlint не получилось ,а вот через инстолятор все OK
![]() Проблема решена,если не считать одной проблемки: я что-то намутил в проекте моего приложения,что теперь оно не хочет компилироваться в режиме Release::DLL(выдает ошибку про коректность в самой студии ![]() ![]() ![]() -------------------- Жизнь - печальная штука. |
|||
|
||||
Ильнар |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 16.1.2006 Репутация: нет Всего: нет |
Смотрика заработало, приложение запустилось. У меня следующий вопрос: когда создаешь инсталятор надо будет указать куда копировать необходимые *.dll-ки, то есть эти две *.dll-ки обязательно попадут по назначению! но ведь тогда нарушается принцип самодостаточности exe-шника! нельзя ли как -нибудь в настройках проекта указать чтобы эта сволочь (VC8) все засунула в exe-файл? и кроме одного файла приложения на выходе больше ничего не было!
|
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Сам придумал принцип? ![]() Хочешь все свалить в EXE -выбери поддержку MFC как static libraries (как-то так). Это в настройках проекта. -------------------- ... |
|||
|
||||
Ильнар |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 16.1.2006 Репутация: нет Всего: нет |
В натуре, работает без всяких dll-ок. Только вот размер exe-шника вырос в 4 раза, но это не проблема при современных аппаратных возможностях.
|
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |