c # — «DLL не найдена ошибка» не может быть исправлено, хотя я скачал недостающие связанные библиотеки DLL

Я создал файл Dll из C ++, затем я назвал его в файле C #.
Работает нормально.

Но потом, когда я попытался экспортировать файлы в другой компьютер. Я получаю это исключение: DLL не найдена.

Я загрузил средство обхода зависимостей, чтобы исправить ошибку, потому что я думал, что моя DLL зависит от других DLL, отсутствующих на втором компьютере; Затем я загрузил недостающие библиотеки DLL.

Тем не менее, я все еще получаю ту же ошибку.

Зависимость Уокер также дает мне следующее сообщение: Приложение не удалось запустить, потому что его параллельная конфигурация неверна.
Как вы думаете, это может быть ключом?

Любезно помочь.
Спасибо

-1

Решение

  • Вам нужно будет установить соответствующую среду выполнения VC ++ на клиентском компьютере. Среда выполнения VC ++ должна соответствовать разрядности (32-разрядной или 64-разрядной) и используемому вами пакету обновлений (см. Диалоговое окно «О программе» — левая сторона, не правая сторона (которая из .NET)).
  • Вы можете использовать /MT опция компилятора, чтобы получить все зависимые DLL в вашу DLL (или EXE).
  • Если вы используете MFC, используйте «Использовать MFC в статической библиотеке»
0

Другие решения

Что я сделал до сих пор

  1. Я скачал Dependency Walker, чтобы проверить наличие недостающих зависимых DLL.
  2. Зависимость Уокер обнаружил, что параллельная конфигурация была неправильной, и предлагает отследить событие с помощью инструмента sxstrace.exe (командная строка):
    http://ntcoder.com/bab/2014/02/27/troubleshooting-side-by-side-issues-using-sxstrace/

  3. Затем я подтвердил характер ошибки с помощью средства просмотра событий, которое выдает мне следующее сообщение:
    Зависимая сборка Microsoft.VC80.DebugCRT, processorArchitecture = «x86», publicKeyToken = «1fc8b3b9a1e18e3b», type = «win32», version = «8.0.50727.762» не найдена. Пожалуйста, используйте sxstrace.exe для подробной диагностики.

  4. Я установил версию Microsoft Visual C ++ 2005 SP1 распространяемый пакет (x86) 8.0.50727.762 из http://www.microsoft.com/en-us/download/details.aspx?id=5638. потому что, по-видимому, проблема, кажется, происходит из-за того, что моя DLL была скомпилирована с VC80 CRT и нужна для запуска.

  5. Затем я вернулся на основной компьютер только для того, чтобы перепроверить и выяснить, что это 64-битная версия, и я уверен, что это ошибка. Извините, что не поднял это с самого начала.

0

Основная проблема заключалась в том, что первый компьютер был 32-разрядным, а второй — 64-разрядным. Я перезагрузил файлы DLL из моего исходного кода (который генерирует DLL), используя второй компьютер, и он работал нормально.

В программе, которая использовала DLL, я вставил код, чтобы проверить, является ли хост 32 или 64-битным, и я бы вызвал соответствующую DLL.

Работало нормально.
Спасибо всем

0
По вопросам рекламы [email protected]