2011-01-02 6 views
3

У меня есть собственное приложение C++, которое было создано под VS2005 (sp1), на машине A. (режим отладки) Теперь мне нужно запустить это приложение на «чистом» компьютере, Clean означает, что он не имеет VS установлен. Когда я копирую папку времени выполнения с машины A на «чистую» машину и пытаюсь активировать приложение, которое требуется переустановить приложение. Очевидно, отсутствующие DLL-файлы вызывают эту проблему на компьютере. Приложение отлично работает. Есть ли какое-нибудь «чистое» решение для такого рода проблем, кроме gessing, в котором отсутствуют DLL? может быть, умный инструмент или установщик, который указывает, какие DLL отсутствуют во время выполнения?Отсутствует проблема с DLL

Спасибо, Liran

+3

Просмотрите журнал событий Windows. Не развертывайте свою сборку отладки. –

ответ

0

Когда он говорит вам, что некоторые библиотеки DLL отсутствуют, то следует сказать, какие из них. Как правило, вы динамически связаны с CRT, что означает, что вы можете просто привязать к нему статически и решить эту проблему.

+0

Это не говорит мне, какие DLL отсутствуют (я бы хотел, чтобы он это делал). Специальное сообщение, которое я получаю, следующее: «Приложению не удалось правильно инициализировать (0xc0150002). Нажмите OK, чтобы прервать приложение. – Liran

0

Вы можете использовать такой инструмент, как ProcessExplorer, чтобы проверить, какие DLL использует ваша программа на машине, где он работает (альтернативно, окно «Модули» в VS или команда «lm» в WinDbg показывают ту же информацию). Затем проверьте, можно ли найти один из них в пути на «чистой» машине.

1

У вас есть два варианта:

  1. Install "отладки среды выполнения" на цель "чистый" компьютер
  2. В опции сборки вы можете выбрать "использовать CRT/MFC в качестве статической библиотеки"
+2

Опция 1 явно запрещена. Время выполнения отладки не лицензируется для перераспределения. Вам нужно будет установить полностью лицензированную Visual Studio (например, VS Express). – MSalters

2

Вы можете использовать Dependeny Walkerhttp://www.dependencywalker.com/ для поиска стандартных библиотек DLL, которые он ссылается, но я не уверен, есть ли простой способ узнать, какие COM-DLL-приложения ссылаются на приложение.

В качестве альтернативы (я не уверен) вы можете запустить приложение на машине A (на котором оно было создано) и использовать process viewer от http://www.sysinternals.com. Он сообщает вам, какие DLL-файлы загружены.

5

Для выполнения этой работы я бы загрузил и установил пакет Microsoft Visual C++ 2005 Redistributable на чистую машину.

Затем я создал бы выпуск приложения и скопировал его на чистую машину.