Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программа запускается только на моем компьютере... На любом другом компьютере - ошибка 
V
    Опции темы
_hunter
Дата 24.4.2007, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



в свойствах проекта ветка С++ (там кодогенератор) выбери вариант "многопоточная"


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Smarts
Дата 24.4.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Любитель @ 23.4.2007,  13:24)
Цитата(dizzy1984 @  23.4.2007,  12:59 Найти цитируемый пост)
Мне очень интересен этот вопрос потому, что месяцев 8 назад я взялся за написание не дот-нет ных приложений на visual studio 8.0 и несомненно было необходимо обеспечить их работу на windows xp. Я очень удивился когда прекрасно работающие программы для windows 2000 и windows 98 писали что-то типа "данная программа не была запущена, т.к она не корректно настроена" на xp. Наблюдался факт №2 который был несколько парадоксален. Для отладки программ я ставил на клиентскую машину саму vs, после чего программа начинала работать. Из этих 2-х фактов я сделал вывод, что мне помогла .net поставившаяся с студией. После пары дней возмущения и поиска решений без .net я нашел всего 2 внятных ответа. Оба сводились к необходимости статической линковки. Я долго боролся с собой, но таки остался на vs2005,т.к она новее 6-ки. С тех пор все свои программы я линкую статически, дабы они работалы везде.

Разумней всего всё-таки таскать reditutable пакте рантайма. Он ставится корректно на любую винду и всё работает как надо. Статическая линковка - это крайний случай. Отключение манифестов - тоже не желательно. МС так старались, этот пункт (рантайм через манифесты) объявлен как один из рулезов VC++ 2005...  smile Да и на самом деле вещь неплохая.
Добавлено @ 13:25
Цитата(dizzy1984 @  23.4.2007,  13:23 Найти цитируемый пост)
Я проверил этот вариант. Отключение манифеста не приводит к обычному способу загрузки dll.

Ты как-то не так отключаешь. Сегодня вечером я посмотрю в студии, разберусь. На днях (как доберусь до инета) - расскажу. ОК?

Cпасибо, это как раз то что нужно. 
Установил данный пак на том компьютере и все заработало без ошибок  smile 

Niko, попробуй то же самое, должно помочь ;)
PM MAIL   Вверх
vano
Дата 24.4.2007, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Скажите, статическая линковка это-  Configuration proprieties -> general -> Use MFC in Static Library ?

Если да, то как её использовать, как я понял она требует отключения опции /CLR.
А без опции CLR  не корректно следующее.
#usig <System.dll>.
А без System dll не могу сделать
MessageBox::Show("Hellow World");

Вопрос.
Как используя статическую линковку, использовать например MessageBox?

------------------------
Поставил Redistributable Pack - Тоже самое ( проекты с DLL MFC + /clr option не идут). 
---------------------------------------------
Похоже manifest отключать нельзя. Вот, что компилятор говорит
  "An application has made an attempt to load the C runtime library without using a manifest.
  This is an unsupported way to load Visual C++ DLLs." 
Я так понимаю, что из этого следует, что с MFC, без manifest работать нельзя.

Это сообщение отредактировал(а) vano - 24.4.2007, 19:12
PM MAIL   Вверх
Любитель
Дата 28.4.2007, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



1. CLR - Common Language Runtime, т. е. .Net Framework. Юзать его ради месаджбокса - очень жестоко. Вызывай месадж-бокс из ВинАПИ smile

2. 
Цитата(vano @  24.4.2007,  17:27 Найти цитируемый пост)
Похоже manifest отключать нельзя.

Прикол в том, что ... это правда. Помогает патчинг DllMain (на неё любой дизасм вас выкинет smile ) в msvcr80.dll и msvcp80.dll (ну и msvcrm80.dll - если юзаем OpenMP), но это не очень хорошо (точнее очень плохо :( ).

Согласно, MSDN - лучший вариант таков (если нет доступа на запись в виндовые папки, но не хотим статик-линк):
1. Собираем со стандартными настройками.
1. У себя из %WinDir%\WinSxS\Manifests тащим манифест x86***Mirosoft.VC80.CRT***.manifest и (не уверен в необходимости) сертификат безопасности x86***Mirosoft.VC80.CRT***.cat  в папку к экзехе.
2. Ренеймим его в Microsoft.VC80.CRT. Для локальных сборок (assembly) никакие хеш-ключи не нужны smile
3. Копируем сюды же (к экзехи) из %WinDir%\x86***Mirosoft.VC80.CRT*** длл-ки. msvcr80.dll - в любом случае, msvcp80.dll - плюсовая стандартная либа (не шаблонами едиными...), msvcm80.dll - поддержка OpenMP.

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

PS Будьте внимательны. У меня было три версии CRT. И соответственно три манифеста (+ *.cat-ы). Хеш-ключи, конечно у всех разные. Причём один манифест (и одна длл-ка) ни с чем не состыковалась smile   Отказалась запускаться smile По-видимому, левая какая-то. Хотел снести её - и тут не так просто, она оказалась кем-то юзаемой. Закрыл почти всё - не помогло. В safe-mode снёс - вроде работает  smile


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


 




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


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

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