2010-10-19 3 views
0

У меня есть устаревшая библиотека проектов msvs2005 C++ (dll). Я открыл проект на рабочей станции WindowsXP с установленным msvs2008 и скомпилировал код. Но когда я пытаюсь использовать его с исполняемым модулем, я вижу, что «my-library.dll или одна из его зависимостей не найдена».MSVCR80.DLL отсутствует. Что я должен установить или что я должен обмануть в конфигурации проекта C++

Dependency Walker сообщает мне, что MSVCP80.DLL, MSVCR80.DLL, MSVCR90D.DLL не пройден. MSJAVA.DLL также пропущен. Я установил 2008 распространяемый пакет Visual C++, но проблема остается. Необходимые библиотеки не были помещены в папку System32.

Что я должен установить на рабочую станцию ​​или что я могу обмануть в конфигурации проекта, чтобы избежать этой проблемы?

Спасибо заранее!

+0

Вы можете загрузить эти библиотеки DLL и поместить их в System32 –

+0

Да, но может быть, есть более цивилизованный способ: своего рода стратегия перераспределения для проекта C++ в настройках проекта msvs или некоторые готовые пакеты msi? –

+2

@ Армен Цирунян: OMFG, это просто неправильно. Возьмите свое подозрительное предложение DLL HELL от злого дьявола. –

ответ

2

Установленный 2008 Visual C++ распространяемый пакет, но проблема остается.

Откуда у вас переиздание?

Существует множество версий redist, наиболее подходящий для MSVC. Однако существует множество вещей, таких как обновления безопасности ATL и т. Д., Поэтому вам нужно посмотреть информацию о номере версии, которая будет присутствовать в манифесте, а затем найти нужную версию (или более новую) для установки.

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

3

Вы должны установить либо Visual C++ 2005 Redistributable Package, либо Visual C++ 2005 SP1 Redistributable Package, так как ваш устаревший код был скомпилирован с помощью Visual Studio 2005 (8.0).

Используйте распространяемый SP1, если код был скомпилирован с помощью VS 2005 SP1.

+0

Спасибо, Фредерик, но так как я импортировал его в MSVS2008, может быть, перекомпиляции достаточно? –

+1

Он явно ищет время выполнения 8.0, то есть VS 2005. Ваша устаревшая библиотека может зависеть от другой внешней библиотеки, для которой требуется эта среда выполнения. –

5

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

При этом, если у вас есть доступ к машине Vista/Windows7, вы можете использовать sxstrace. Это неинтуитивный инструмент для отслеживания этих проблем. Вы можете использовать информацию, созданную с помощью этого инструмента, для определения того, что ищет ваше приложение.

  1. Выполнить это в командной строке

    sxstrace.exe -logfile: sxstrace.st

  2. Теперь запустите приложение и получить ошибку

  3. Теперь нажмите кнопку ввода, чтобы остановить прослеживать
  4. Теперь введите:

    sxstrace синтаксического анализа -logfile: sxstrace. st -outfile: sxstrace.txt

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

Источник: http://blogs.msdn.com/b/junfeng/archive/2006/04/14/576314.aspx

Кроме того, вы можете захотеть взглянуть на эту статью на сайте MSDN, как он помогает устранению этих проблем: http://msdn.microsoft.com/en-us/library/ms235342(VS.80).aspx