Отсутствует проблема с DLL - PullRequest
3 голосов
/ 02 января 2011

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

Спасибо, Liran

Ответы [ 5 ]

5 голосов
/ 03 января 2011

Чтобы сделать это, я бы скачал и установил Microsoft Visual C ++ 2005 Распространяемый пакет на чистой машине.

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

2 голосов
/ 02 января 2011

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

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

1 голос
/ 02 января 2011

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

  1. Установить «время выполнения отладки» на целевом «чистом» компьютере
  2. В опции сборки вы можете выбрать «использовать CRT / MFC в качестве статической библиотеки»
0 голосов
/ 02 января 2011

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

0 голосов
/ 02 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...