Система. DllNotFoundException: Неспособный загрузить DLL на окне 2003

У меня есть C++ dll использующий в моем c# проекте, Он хорошо работал на моей машине Window XP, но когда я копирую свой проект отладки на сервере окна 2003 (x64), я получил ошибку ниже, может любой говорить мне, что является этой проблемой, и как может я фиксировать его.

Спасибо

"Система. DllNotFoundException: Неспособный загрузить DLL 'lib.dll': Этому приложению не удалось запуститься, потому что конфигурация приложения является неправильной. Переустановка приложения может решить эту проблему"

9
задан Rick 19 January 2010 в 16:01
поделиться

4 ответа

Тело жаловаться на то, что у него есть проблемы с расположением DLL CRT. Сначала проверьте, что DLL содержит необходимые проявления. В Visual Studio, File + Open + File, выберите DLL и убедитесь, что он содержит узел RT_Manifest. Следующая проблема в том, что вы не можете развернуть отладочную сборку вашей DLL. У него будет зависимость от DEBUG версии CRT, вы не можете установить это на целевой машине.

Либо разверните сборку отпуска вашей DLL или компилируйте DLL с вариантом / MT, поэтому CRT статически связан. Проект + свойства, C / C ++, генерация кода, библиотека времени выполнения. Это не будет работать, если DLL была скомпилирована с вариантом / clr.

13
ответ дан 4 December 2019 в 08:15
поделиться

IS Lib.dll 32-битная DLL? Ваша программа C # будет работать на X64, но не сможет загрузить 32-битные DLL. Вы можете попробовать изменить целевой CPU проекта C # на «X86», чтобы заставить его работать под WOW64.

3
ответ дан 4 December 2019 в 08:15
поделиться

Похоже, вы не установили визуальное время выполнения C ++ на целевой машине. Вы можете установить это из здесь , так как кажется, использует версии отладки этих DLL, возможно, вам также нужно сначала создать свое приложение в режиме выпуска? Этот пост и этот есть некоторые другие предложения, которые могут помочь ...

3
ответ дан 4 December 2019 в 08:15
поделиться

Для проблемы загрузки DLL рекомендую вам использовать Tonceency Walker . Он оказался ценным при работе с такими проблемами, как это покажет вам точную проблему.

Если у вас есть собственная Visual Studio 2005, вы можете найти его в C: \ Program Files \ Microsoft Visual Studio 8 \ Common7 \ Tools \ bin \ dependes.exe .

Обновление:

msvcr90d.dll - это отладочная версия Visual C ++ Runtime 9.0. Это следует использовать только для отладки цели. Я настоятельно рекомендую построить версию выпуска вашей библиотеки, чтобы избежать проблемы загрузки DLL. Однако, если вам абсолютно необходимо развернуть версию отладки, вы найдете все необходимые DLL в C: \ Program Files \ Microsoft Visual Studio 9.0 \ VC \ Redist \ Debug_nonredist \ x86 .

7
ответ дан 4 December 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: