VS 2008 Под вистой, проблема переноса консольного приложения
Подскажите, пожалуйста, как быть.
Написал небольшую консольную программу. Написал на VS 2008, в операционной среде Виста. Запускается нормально работает.
Но при попытке запустить с другого компьютера с Windows XP sp2 появляется окно с сообщением ошибки. Окно прилагается.
С какими параметрами скомпилировать?
С какими параметрами скомпилировать?
/MT
Обсуждалось на форуме уже около миллиона раз.
Project Property->Configuration properties->c/c++->code generation-runtime library->MT
Project Property->Linking->Manifest File->Generating Manifest->NO
Правда, имелось в виду использование MSVS 2005.
В результате получил ошибку:
[COLOR="Red"]Command line error D8016 : '/MT' and '/clr' command-line options are incompatible[/COLOR]
Если это так часто обсуждалось тогда Вам наверное не составит труда кинуть ссылку на это обсуждение. Мне как новечку самостоятельно не справиться. По сему и открыл эту тему.
Если это так часто обсуждалось тогда Вам наверное не составит труда кинуть ссылку на это обсуждение. Мне как новечку самостоятельно не справиться. По сему и открыл эту тему.
http://forum.codenet.ru/showthread.php?t=38688
http://forum.codenet.ru/showthread.php?p=254204
jsonborn, тебе тоже сюда:
http://forum.codenet.ru/showthread.php?t=38688
но если не затруднит, поясните, все-таки. В моей ситуации (СLR->Windows Forms Application), простановка опции "No Common Language Runtime support" приводит к многочисленным ошибкам компиляции:
[SIZE="1"]1>Compiling...
1>AssemblyInfo.cpp
1>.\AssemblyInfo.cpp(3) : error C2871: 'System' : a namespace with this name does not exist
1>.\AssemblyInfo.cpp(4) : error C2653: 'System' : is not a class or namespace name
1>.\AssemblyInfo.cpp(4) : error C2871: 'Reflection' : a namespace with this name does not exist
1>.\AssemblyInfo.cpp(5) : error C2653: 'System' : is not a class or namespace name
1>.\AssemblyInfo.cpp(5) : error C2871: 'CompilerServices' : a namespace with this name does not exist
1>.\AssemblyInfo.cpp(6) : error C2653: 'System' : is not a class or namespace name
1>.\AssemblyInfo.cpp(6) : error C2871: 'InteropServices' : a namespace with this name does not exist
1>.\AssemblyInfo.cpp(7) : error C2653: 'System' : is not a class or namespace name
1>.\AssemblyInfo.cpp(7) : error C2871: 'Permissions' : a namespace with this name does not exist[/SIZE]
и еще куча всего....
если же выставить опцию по дефолту, то получается традиционная в таких случаях ошибка:
[SIZE="1"]1>cl : Command line error D8016 : '/MT' and '/clr' command-line options are incompatible[/SIZE]
правильно ли я понял (из Вашей ссылки), что исправить указанную проблему можно, только установив соответствующую версию фреймворка на компьютере пользователя?
спасибо.
правильно ли я понял (из Вашей ссылки), что исправить указанную проблему можно, только установив соответствующую версию фреймворка на компьютере пользователя?
Да, именно так
/MT - это опция компиляции unmanaged-приложений, а ты собираешь managed-приложение. Т.е. опция там эта вообще неприменима.
Спасибо за ссылки. Но у меня проблема осталась не решенной. Может 2008 VS хочет какую-то особенную библиотеку, которая есть в Висте, но нет в ХР?
вообще, как-то странно: неужели для того, чтобы запускать на другом компьютере программу, весом 88 Кбайт, нужно накатывать Framework 3.0 SP1, весом 245 метров?
я было установил compact-ные версии - сначала 2.0 SP1, затем 3.5 - по боку. все равно программа не запускается... наверное, данная проблема как-то по-другом решается.
вообще, как-то странно: неужели для того, чтобы запускать на другом компьютере программу, весом 88 Кбайт, нужно накатывать Framework 3.0 SP1, весом 245 метров?
я было установил compact-ные версии - сначала 2.0 SP1, затем 3.5 - по боку. все равно программа не запускается... наверное, данная проблема как-то по-другом решается.
Если хотите отказаться от использования Framework, откажитесь от использования CLR. Хотя в развитием технологий .NET, присутствие Framework'а на "машине" пользователя с ОС Windows - это по-моему уже стандарт.
Спасибо за ссылки. Но у меня проблема осталась не решенной. Может 2008 VS хочет какую-то особенную библиотеку, которая есть в Висте, но нет в ХР?
Ну так разберись, какую "особенную библиотеку" ты используешь.
Телепаты уже давно ушли в отпуск и до сих пор не вернулись, а без них сложно понять что там у тебя с проектом.
Выясни, что за проект ты строишь, managed или unmanaged. М-да... это все равно, что посоветовать художнику определиться, какими все же красками он рисует, акварелью или фломастерами. Создатель должен знать каким инструментом он пользуется.
Если это managed, то тебе надо установить соотв. .NET Framework на др. машину. Учти, что они не имеют обратной совместимости, т.е. если ты собираешь под .NET 2.0, то на др. машине должен стоять именно .NET 2.0, а не 1 или 3.
Если это unmanaged, то проект должен быть собран без использования доп. библиотек, т.е. с ключом /MT. Обрати так же внимание на параметр General -> Use of MFC, если ты используешь MFC.
Либо надо ставить соотв. библиотеки на др. машину. При этом надо помнить про технологию Side by Side, т.е. должны стоять те же библиотеки тех же версий.
Определись так же, какую версию продукта ты строишь: release или debug. Они используют разные варианты библиотек.
вообще, как-то странно: неужели для того, чтобы запускать на другом компьютере программу, весом 88 Кбайт, нужно накатывать Framework 3.0 SP1, весом 245 метров?
я было установил compact-ные версии - сначала 2.0 SP1, затем 3.5 - по боку. все равно программа не запускается... наверное, данная проблема как-то по-другом решается.
Ну так ты определись, какой Framework ты используешь, а не тыч пальцем в небо.
Что значит, "программа не запускается"?
"Автомобиль не заводится, помогите мне!"...
Он может не заводиться из-за миллионов причин. Но в результате окажется, что либо бензина нет ("ой! а нужен бензин?!") или нет ключей ("ой! а они то нафига"), либо вообще нет автомобиля ("ой! а это я как-то упустил из виду").
Разберись какие симптомы. Что пишет загрузчик на экране, что отражается в журнале событий.
.NET Framework не имеет обратной совместимости. А ставить с установкой ВСЕ версии .NET от 1.0 до крайней - это лишнее время, объемы и т.п.