henic: (Default)
[personal profile] henic
Гугль невнятен. А вопрос актуален донельзя...
Cкомпилировал аппликацию под Visual Studio 2012. MFC, библиотеки статические. Конфигурация Win32, Debug. Компьютер 64-битный с семеркой.
Переношу на другой компьютер (XP, 32 бита), запускаю.
Получаю "Error executing program".

В другую сторону (VS-2005, 32 bits, перенесенный на 64-битовый) - работает.

Что это, Берримор? Что подкрутить?

Date: 2012-11-12 10:44 am (UTC)
From: [identity profile] mopexod.livejournal.com
Надо поставить visual studio runtime (Visual C++ Redistributable for Visual Studio 2012). Для release он точно есть, а для debug - не уверен.

Date: 2012-11-12 12:52 pm (UTC)
From: [identity profile] ex 314truha (from livejournal.com)
Для дебаг нету разумеется :) Надо ручками тащить библиотеки с компа где msvc и прописывать в манифестах. Короче, попал Витёк.
Edited Date: 2012-11-12 12:53 pm (UTC)

Date: 2012-11-12 12:57 pm (UTC)
From: [identity profile] henic.livejournal.com
У меня все библиотеки, вроде, наличествуют. На старом компе обитает VS, только более старый, но со всеми потрохами.

Date: 2012-11-12 01:02 pm (UTC)
From: [identity profile] ex 314truha (from livejournal.com)
Библиотеки старой студии несовместимы с новым экзешником, чо. В дебажных версиях тебе совместимости никто не гарантирует. Скопируй всё что твоему экзешнику надо (все эти ms*d.dll) в локальный путь экзешника и заманифесть там.

Date: 2012-11-12 01:04 pm (UTC)
From: [identity profile] henic.livejournal.com
Уже. Х*й. Щас те две либы добавлю. Шоб они были здоровы...
Проблема в том, что экзешник уходит к пользователям, до которых сутки лететь, потом еще поездом, автобусом и на собаках. У них я не смогу поставить никакие библиотеки.

Date: 2012-11-12 01:10 pm (UTC)
From: [identity profile] ex 314truha (from livejournal.com)
Нех*й пользователям слать дебажную версию. Да и мелкософтовская лицензия вроде не позволяет дебажный рантайм их студии в деплоймент посылать.
Решение : скомпиляй рилизную версию с дебаг-символами, с выключеным инлайнингом и с отключеной оптимизацией. Будет тебе и возможность дебагировать дампы своего кода, и не редистрибьютить мелкософтовский дебажный рантайм; в качестве премии - совместимость мелкософтовских же рантаймов.

ПС: Простите за обилие англизмов. Я не знаю как это все па-рюська будет

Date: 2012-11-12 01:14 pm (UTC)
From: [identity profile] henic.livejournal.com
Да я и релизом удовлетворюсь, лишь бы работало. :))

Date: 2012-11-12 01:16 pm (UTC)
From: [identity profile] henic.livejournal.com
Аааа, проститутка двора Его Величества, я так давно пользовал релиз-компиляцию, что там путей к файлам сильно нехватает. :) Есть работка на ближайшие полчаса. :)

Date: 2012-11-12 01:17 pm (UTC)
From: [identity profile] ex 314truha (from livejournal.com)
Тогда сделай обратное: в дебаг-конфигурации укажи пользовать релизный рантайм, MFC и убери макро _DEBUG и DEBUG .

Date: 2012-11-12 01:19 pm (UTC)
From: [identity profile] henic.livejournal.com
Жостко! :))

Date: 2012-11-12 10:45 am (UTC)
From: [identity profile] mopexod.livejournal.com
А, постой, еще может у тебя compilation mode для 64 бит. Тогда на 32 работать не станет, понятное дело.

Date: 2012-11-12 10:47 am (UTC)
From: [identity profile] henic.livejournal.com
Вот этот вопрос я и хочу уточнить. Компилирую как Win32, мне казалось, этого должно хватить. Ан нет... В опциях (если кликнуть на win32) есть и вариант x64, я туда не лезу.

Date: 2012-11-12 10:52 am (UTC)
From: [identity profile] mopexod.livejournal.com
Во-первых, попробуй скомпилировать release, и его запустить на другой машине. Во-вторых, наш друг - Dependency Walker, если не хватает библиотек - он скажет. Я бы начал с runtime, он самый маленький и безобидный.

Date: 2012-11-12 10:57 am (UTC)
From: [identity profile] henic.livejournal.com
Cпасибо. Иду проверять.

Date: 2012-11-12 11:25 am (UTC)
From: [identity profile] henic.livejournal.com
Крутой Уокер ничего толком не показал. Несколько либов, которые я скачал - не помогло.
Такое ощущение, что компиляция вообще не под ту платформу. Буду пробовать компилять релиз-версию, хотя толку-то, мне нужна отладочная.

Date: 2012-11-12 11:48 am (UTC)
From: [identity profile] mopexod.livejournal.com
Кстати, а ты уверен, что "Error executing program" выдает система, а не сама программа, не нашедшая какого-нибудь конфигурационного файла? "Error executing program" - какое-то странное системное сообщение. Там какие-то еще детали приведены?

Date: 2012-11-12 12:31 pm (UTC)
From: [identity profile] henic.livejournal.com
Нет, никаких других сообщений. И это мой код, от начала до конца, такого сообщения там нет, что-то системное...

Date: 2012-11-12 12:55 pm (UTC)
From: [identity profile] ex 314truha (from livejournal.com)
Не питай илюзий, код не весь твой. Ты штоле advapi32 и msvcrXX писал?

Date: 2012-11-12 12:58 pm (UTC)
From: [identity profile] henic.livejournal.com
Ну я к тому, что это не аппликация ругается, а система. Включая системные файлы.

Date: 2012-11-12 12:56 pm (UTC)
From: [identity profile] ex 314truha (from livejournal.com)
помимо копирования боблиотек надобно ещё манифест подкрутить, мда-с

Date: 2012-11-12 11:05 am (UTC)
From: [identity profile] nashdak.livejournal.com
Win32 - это общий макрос, про ОС

Date: 2012-11-12 11:07 am (UTC)
From: [identity profile] henic.livejournal.com
А где еще ему объяснить, что прога будет бегать на 32-битном?

Date: 2012-11-12 11:24 am (UTC)
From: [identity profile] nashdak.livejournal.com
Пишут, что надо использовать "x86" вместо "Any CPU"

Date: 2012-11-12 11:26 am (UTC)
From: [identity profile] henic.livejournal.com
Ooops... Секунд, лезу на санузел, проверять этот вариант.

Date: 2012-11-12 11:32 am (UTC)
From: [identity profile] ban-dana.livejournal.com
Это для .net вроде бы.
Надо в опциях компилятора смотреть.

Date: 2012-11-12 11:37 am (UTC)
From: [identity profile] henic.livejournal.com
Cмотрел. Указано x86.

Придется вечером копать гугль всерьез. :(
Это я сейчас перехожу на новый комп, с новым же компилятором. Очень постепенно, маму его.

Date: 2012-11-12 11:40 am (UTC)
From: [identity profile] henic.livejournal.com
Ну то есть x86 и win32.

Date: 2012-11-12 11:33 am (UTC)
From: [identity profile] henic.livejournal.com
Target machine прописано x86.
Я еще попробую сейчас релиз скомпилировать.

Date: 2012-11-12 11:47 am (UTC)
From: [identity profile] panikowsky.livejournal.com
Обожаю Виндоус. Вот именно за эти маленькие радости.

Date: 2012-11-12 01:14 pm (UTC)
From: [identity profile] ex 314truha (from livejournal.com)
Эти маленькие радости - пустяк в сравнении с несовместимостью GLIBC в пингвинОСах. "Хотите поговорить об этом?"(Ц)

Date: 2012-11-12 01:18 pm (UTC)
From: [identity profile] henic.livejournal.com
А вот никогда не сталкивался. Компилял только под линуксом.
Меня с хабра выгнали, одна из причин (насколько я понимаю): начали мне рассказывать о прелестях убунты, я сказал, что знаком, мне сказали, что вряд ли достаточно, я, имея в виду вообще линуксы, сказал, что лет пятнадцать. Тут-то они и вспомнили, что убунте восемь, или вроде того. Ну да, я с красной шапочкой тогда возился...

Date: 2012-11-12 01:23 pm (UTC)
From: [identity profile] ex 314truha (from livejournal.com)
Ай-яй-яй... Имел я радость ставить CentOS лишь ради того, чтоб построить некую хрень через тулчейнз которые заточены под CentOS, причём строго определённой версии. В Уебунтах и в Сюсях тулчейнзовский loader тупо говорил, что не станет работать с хостовой glibc. "Гранаты у них не той системы"(Ц)

А glibc, брат, это такая штука, которую никакие фокусы с LD_LIBRARY_PATH не лечат, так как эта библиотека, которая нужна самому загрузчику. Уловка-22
Edited Date: 2012-11-12 01:24 pm (UTC)

Date: 2012-11-12 01:26 pm (UTC)
From: [identity profile] henic.livejournal.com
У нас есть одна софтина, которая отказывается работать за пределами фирмы.
Злые тестеры, конечно, выяснили, куда она лезет для выяснения этого обстоятельства.

А совместимость библиотеки никто и не гарантировал, однако. :)

Date: 2012-11-12 07:09 pm (UTC)
From: [identity profile] ex 314truha (from livejournal.com)
Заметьте, не я это предложил

Date: 2012-11-12 02:05 pm (UTC)
From: [identity profile] panikowsky.livejournal.com
При этом, заметьте, Линуксы паяют/клепают все, кому не лень, имея в результате вот этот балаган. А Виндоус, казалось бы, производится одной-единственной фирмой...

Date: 2012-11-12 07:11 pm (UTC)
From: [identity profile] ex 314truha (from livejournal.com)
Не-не, гнилая отмазка, потому как glibc есть детище gnu, а во-вторых, даже внутри разных версий одного дистрибутива эта поебень имеет место быть (экзешник построен с glibc пятой centos, на шестой ужене поднимается)

Date: 2012-11-12 12:51 pm (UTC)
From: [identity profile] ex 314truha (from livejournal.com)
depends тебе в помощь. Может ткнёт тебе пальцем в несовместимую библиотеку.
Походу, если у тебя Debug то redistributable не вылечит.

Date: 2012-11-12 12:55 pm (UTC)
From: [identity profile] henic.livejournal.com
Хер там. Дал я все недостающее, показывает только на две хреновины с невозможно длинными названиями, но их же он показывает касательно другого файла, скомпилированного на старом компе, и тот экзешник вполне запускается.

Date: 2012-11-12 02:22 pm (UTC)
From: [identity profile] henic.livejournal.com
release вылетает точно так же. Усраться можно...

Date: 2012-11-12 07:13 pm (UTC)
From: [identity profile] ex 314truha (from livejournal.com)
Реально усраццо.
Ты уверен, что это релиз? Это релиз построеный указаным выше методом? Может, где-то что-то забыто? depends не указывает на наличие ms*.d.dll или vc*d.dll ?

Date: 2012-11-13 10:18 am (UTC)
From: [identity profile] henic.livejournal.com
Просто релиз. Я все перелопатил, проставил пути, в общем, это релиз с дефолтами компилятора.
Четкое ощущение, что дело не в библиотеках, а в экзешнике под неправильную платформу. Буду разбираться завтра.

Date: 2012-11-18 05:49 am (UTC)
From: [identity profile] henic.livejournal.com
Блядский рот... Дошли у меня руки до подробного выяснения. Сделал пустую консольную аппликацию - та же фигня.
Запустил из черного окна - получил более вменяемый ответ: "hello.exe is not a valid Win32 application".
Как и ожидалось.
Забил в гугль.
VS 2012 applications cannot be run under Windows XP.
See this VC++ blog on why and how to make it work.
Мать-перемать, лезу искать подробности...
Clickonce bootstrapper engine (setup.exe) that was shipped with Visual Studio 2012 is NOT compatible with any OS below Windows Vista. So, the above error message is expected and by design. The reason for this behavior is because the bootstrapper is compiled using the VC compiler and the Dev11 VC compiler does not support Windows XP.

В общем, есть какой-то патч, добавляющий возможность таргетинга на XP. Cейчас буду его пробовать.
Почему уроды не установили мне 2010, с которым проблемы не было - гоню от себя этот вопрос.

Date: 2012-11-18 07:08 am (UTC)
From: [identity profile] ex 314truha (from livejournal.com)
Бляццкое, да.... Век живи, век учись.
У меня с запуском дебажных бинарников построеных в 2010 беда была в своё время, причом с теми же симптомами. Я вот и подумал грешным делом, что ты те же грабли топчешь. Но оказывается у мелкософта граблей много и разнообразно.

Date: 2012-11-18 07:13 am (UTC)
From: [identity profile] henic.livejournal.com
Эти - из комплекта "детские грабли". Гораздо больнее.
Патч бежит уже часа полтора, страшно подумать, что он на диске ворочает.
Page generated Jul. 4th, 2025 08:23 pm
Powered by Dreamwidth Studios