Как решить «Указанный модуль не может быть найден», пока DLL-файл уже находится в каталоге приложения? - PullRequest
1 голос
/ 13 сентября 2010

Я разработал приложение winforms в C # 4.0, которое использует .dll для связи с USB-устройством.С Visual Studio 2010 это приложение работает без проблем.Ссылочная .dll копируется в папку bin.

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

Когда я помещаю приложение в сетевую папку и запускаю его (по сети) со своего компьютера для разработки, оно все еще работает нормально, но с моего целевого компьютера теперь регистрируется «Не удалось загрузить файл или сборку» sub20dnc.dll 'или одна из его зависимостей. Указанный модуль не найден. "

Но, как я уже сказал, .dll копируется в папку bin: sub20dnc.dll находится в том же каталоге, что и исполняемый файл.sub20dnc.dll является частью установки, уже выполненной на ПК, поэтому ее зависимости должны быть соблюдены.Я пытаюсь решить эту ошибку сначала, прежде чем решить, почему на целевой машине ничего не происходит локально.

Есть идеи, как решить эту проблему?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 13 сентября 2010

Звучит так, будто им не хватает зависимости от их компьютера, а не от того, что у вас нет .dll. То есть зависимость рассматриваемого DLL-файла, который «не найден». Это ошибка, которую я всегда вижу, когда что-то еще не относится к более позднему винтажу.

Попробуйте запустить Depends.exe на своем компьютере, проверяя наличие DLL-файлов на вашем компьютере. Кроме того, могу ли я предложить подключить программное обеспечение к тестовому компьютеру, который имеет самую базовую конфигурацию целевого компьютера, с которой вы пытаетесь работать. То есть не о последних и самых больших обновлениях.

1 голос
/ 13 сентября 2010
0 голосов
/ 18 июня 2014

Это старый вопрос, но у меня есть решение для этой конкретной DLL.

sub20dnc.dll (или sub20dnc_v4.dll, версия .NET 4) представляет собой оболочку .NET вокруг sub20.dll,который драйвер SUB-20 устанавливает в Windows \ System32 и Windows \ SysWOW64.Когда вы запускаете программу на своем компьютере разработки, sub20dnc.dll загружает sub20.dll из одного из этих двух каталогов.

Вы можете установить драйвер SUB-20 на целевой машине или связать sub20.dll с вашим приложением в дополнение к sub20dnc.dll. Если вы решили связать sub20.dll, убедитесь, что вы выбрали правильную версию sub20.dll для целевой платформы вашего приложения с вашего компьютера разработки.(Эти местоположения являются правильными только при использовании 64-разрядной программы для копирования файла !)

  • 32-разрядная sub20.dll: Windows \ SysWOW64 \ sub20.dll
  • 64-битная sub20.dll: Windows \ System32 \ sub20.dll
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...