|
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
|
|
Правильное создание релизной версии проекта в Visual Studio04.05.2013, 09:48. Показов 105815. Ответов 13
Метки нет (Все метки)
Салют!
Уже долгое время бьюсь над проблемой, когда созданный на одном компьютере проект не работает на другом. Все длл я собрал в папку с программой, но дело в том, что эти самые длл ищутся сначала в системных папках, и, если там найдена таковая, используют ее. А версии длл'ек часто различаются. Нет ли способа каким-либо образом вручную указать, какие именно длл и откуда их необходимо проверять в первую очередь? В частности, с переносом с win7 на win7 вроде разобрался (в настройках режим \MT поставил, и на парочке проверенных это работает), но вот при попытке запустить на XP уже возникают проблемы (хотя это как раз таки самый актуальный вопрос)... P.s. 1. Хотелось бы обойтись без установки redist на этом компе; 2. Недавно встретил такую программу, как ILMerge, для сборки exe и всех длл'ек в один файл, но походу она конкретно в этом случае не подходит (проверено). Может, есть какие-либо аналоги именно для программы, написанной на VS? Спасибо.
0
|
|
| 04.05.2013, 09:48 | |
|
Ответы с готовыми решениями:
13
Открытие проекта в более старой версии Visual Studio Visual Studio 2010 (создание проекта) Visual studio 2013 и создание проекта |
|
Ушел с форума
|
||||||
| 04.05.2013, 10:46 | ||||||
Сообщение было отмечено как решение
Решение
Первое, в чем необходимо убедиться - что программа не использует функции, которые могут
отсутствовать на целевых версиях Windows. Например, InitializeCriticalSectionEx поддерживается, начиная с Windows Vista, а CreateFile2 вообще есть только на Windows 8 и Windows Server 2012. Один из способов достичь этого - задавать целевые версии самому, через макроопределения. Следующий фрагмент разрешает включать из стандартных заголовков SDK только те объявления, которые имеют смысл для Windows XP (0x0501 - это номер версии NT для Windows XP (5.1), а 0x0600 - это версия Internet Explorer для этой системы, в данном случае шестая):
заголовок с соответствующим названием, например targetver.h (target version). Теперь при попытке использовать функцию, доступную только на более новых, чем Windows XP, системах, будет выдана ошибка компиляции. Это не панацея, но решение 90% проблем данного класса. Хотя некоторые все равно останутся. Например exe, собранный в Visual C++ 2010, имеет зависимость от функций EncodePointer и DecodePointer, и поэтому не запустится на Windows Server 2003 RTM (который без R2 и без сервис-пака), так как на данной системе эти функции отсутствуют. А вот Visual C++ 2008 такой проблемы не имел. Бывает, что программе, если она запускается на новых системах, нужны некоторые новые функции, в этом случае следует определять номер версии Windows (GetVersionEx) и загружать необходимые dll динамически - LoadLibrary/GetProcAddress. При этом следует учитывать, что программа может быть запущена в режиме совместимости. Второе - проверить, что программа не имеет зависимостей от dll, которые могут отсутствовать на целевых системах. Распостраненный случай - отсутствие нужной версии Visual C++ Runtime. В Visual C++ 2008 рантайм был сделан как SxS-сборки и его нужно было либо включать в инстяллятор программы, как Merge Module или vcredist.exe, либо делать в каталоге с установленной программой дополнительную подпапку со специальным именем и помещать сборку туда. В Visual C++ 2010 решение проблемы упростили и рантайм (msvcr100.dll/msvcp100.dll) теперь подключается, как обычная dll, без манифестов и прочих сложностей. Хотя вы можете по-прежнему включать в инсталлятор программы Visual C++ 2010 Redistributable, он просто скопирует файлы рантайма в папку Windows\system32. Ключ /MT компилятора тоже может помочь, в этом случае рантайм подключается статически и зависимостей от msvcr100.dll/msvcp100.dll не будет. Хотя данный способ не всегда возможен. Если проблема остается, можно воспользоваться утилитой Dependency Walker: http://www.dependencywalker.com/ Запускайте ее на проблемной системе и смотрите, каких dll не хватает. Еще находить проблемы совместимости очень помогает использование виртуальных машин. Можно сделать себе целый "зоопарк" разных виртуальных систем и конфигураций и перед каждым релизом софта тестировать его на этих системах.
34
|
||||||
|
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
|
|
| 07.05.2013, 19:14 [ТС] | |
|
спасибо за ответ.
0
|
|
|
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
|
|
| 07.05.2013, 19:47 | |
|
Если проект пишется на С++ в консоли, то Свойства проекта -> Общие -> Использование MFC -> Использовать MFC в статической библиотеке. Построить проект. Должно работать, я всегда так делаю.
2
|
|
|
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
|
|
| 07.05.2013, 21:52 [ТС] | |
|
Дык а причем там MFC то? Я ж его не использую... или я чего-то не понимаю?
0
|
|
|
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
|
|
| 08.05.2013, 20:35 | |
|
В этом вся и фишка. Почему-то так работает ...
Попробуйте и скажите, получится ли у Вас так.
0
|
|
|
6 / 6 / 3
Регистрация: 20.11.2013
Сообщений: 249
|
||||||
| 06.07.2014, 21:22 | ||||||
|
Убежденный, ключ /MT это тут?
если я тут его выбераю то появляется
0
|
||||||
|
Ушел с форума
|
||
| 06.07.2014, 22:38 | ||
|
1
|
||
|
6 / 6 / 0
Регистрация: 31.05.2015
Сообщений: 59
|
||
| 02.12.2015, 09:41 | ||
|
mat_for_c,
0
|
||
|
0 / 0 / 0
Регистрация: 09.05.2016
Сообщений: 5
|
|
| 10.05.2016, 01:42 | |
|
ОЧень полезная тема, спасибо)
0
|
|
|
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
|
||
| 19.06.2016, 14:53 | ||
|
0
|
||
|
6 / 6 / 0
Регистрация: 31.05.2015
Сообщений: 59
|
|
| 19.06.2016, 18:37 | |
|
Все то же самое. Это работает для любых нативных проектов будь то вынь32 или мфк.
Вобще это не работает только для управляемых проектов, т.е. для C++ CLI
0
|
|
|
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
|
||
| 20.06.2016, 11:35 | ||
|
для визуальных вин апи это не подходит. если поставить статику - то получите шыш в компиляции
0
|
||
|
0 / 0 / 0
Регистрация: 13.10.2018
Сообщений: 15
|
|
| 02.02.2020, 15:15 | |
|
Я совсем недавно начал программировать, и у меня возникла такая же проблема. Но я обычно пишу в эклипсе, не знаю где там настройка Использование MFC. Подскажите где ее найти.
0
|
|
| 02.02.2020, 15:15 | |
|
Помогаю со студенческими работами здесь
14
Создание нового проекта в Visual Studio Создание UML проекта на Visual Studio 2010 Создание шаблона проекта visual studio 2005 Создание проекта в Visual Studio Express 2010 Создание проекта InstallShield Limited Edition в Visual Studio Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|