Какие пакеты C ++ мне нужны для запуска программы? - PullRequest
0 голосов
/ 14 апреля 2011

Я создал приложение C #, которое использует C ++ dll, и я пытаюсь создать установочный пакет, который позволит запускать его на других компьютерах, независимо от того, имеют они VS или нет, проблема в том, что я не знаю, какие библиотеки C ++ мне нужныпозволить ему сделать это.Когда я запускаю только приложение на пустой виртуальной машине, он говорит: «xxxx столкнулся с проблемой и должен быть закрыт».Если я пойду скачаю версию Visual Studio 2008 Express и установлю ее на компьютер, моя программа будет работать нормально.Проблема в том, что для загрузки требуется 85-185 МБ, а для установки на машину - от 335 МБ до 1.1 ГБ, программа, которая ее использует, занимает всего 33 КБ.огромные накладные расходы ... если я устанавливаю только распространяемый C ++ с сайта msdn, это занимает 4 Мб, но это не позволит мне запустить мою программу.

Какие пакеты из C ++ мне нужны, чтобы эта программа работала на пустом компьютере?

Ответы [ 3 ]

1 голос
/ 14 апреля 2011

На этот вопрос сложно ответить. Если у вас есть источник c ++ dll, вы сможете увидеть его зависимости, если человек не использует много вызовов com или load из библиотеки. Одним из лучших инструментов, которые я использовал для получения информации о зависимости от c ++, был зависимость.exe . Одна вещь, чтобы проверить, является ли это вашим кодом, состоит в том, что вы не используете отладочную версию с зависимостями от dll отладки, которые, я думаю, не находятся в распространяемом.

0 голосов
/ 14 апреля 2011

Необходимые библиотеки времени исполнения C ++ - это те, которые поставляются с компилятором как распространяемый пакет, и именно этот! Другие редистретные пакеты не будут работать должным образом из-за встроенных в исполняемые файлы манифестов, для которых требуется точная версия (проверяется хэш-значением двоичных файлов в каталоге сборки рядом друг с другом C: \ Windows \ SxS)

Таким образом, вы правы с распространяемым, но вам нужен тот, который был установлен с компилятором, а не один из лучших предположений из Интернета. Точные версии можно посмотреть в файлах манифеста (XML)

0 голосов
/ 14 апреля 2011

Калеб, я рекомендую вам программу под названием Dependency Walker . Он покажет вам все dll-зависимости, которые у вас есть. Я уверен, что их гораздо больше для Windows, но я пользуюсь ими довольно давно, и мне это нравится. Итак, вы поступили правильно, загрузив распространяемый пакет с веб-сайта MS, но ваше приложение, вероятно, зависит от некоторых других библиотек. Когда я давно пытался собрать свой установщик с помощью Visual Studio, я помню, что это был способ включить распространяемый пакет в ваш установщик или использовать параллельную установку - в зависимости от того, позволяло ли вам выполнить лицензионное соглашение вашей версии Visual Studio это или нет. Также вы можете включить все dll-зависимости, которые есть у вас в установщике.

Надеюсь, что поможет

...