У нас есть приложение .NET, которое использует библиотеку C ++ через [DllImport]. Он отлично работает на многих компьютерах (тысячи клиентов), за исключением 3 компьютеров. На всех них установлена Windows 10 (другие платформы Windows 10 работают нормально).
Исключение составляет:
System.DllNotFoundException: Unable to load DLL 'Helper.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
Эта dll помещается в ту же папку, что и основной исполняемый файл.
Что уже сделано, чтобы исправить:
положить DLL в папку system32;
установлена другая версия vc redist;
Результат тот же.
Есть идеи, ребята?
Заранее спасибо!
Не помещайте DLL в системный каталог. Вы не должны помещать туда файлы. Поместите DLL в тот же каталог, что и исполняемый файл.
Если вы делаете это, и система сообщает DllNotFoundException
это означает, что одна из зависимостей DLL не может быть найдена. Далее вам нужно выяснить, что это за зависимости, и убедиться, что они все выполнены.
Вы можете использовать такой инструмент, как Dependency Viewer, чтобы проверить зависимости, но на самом деле лучший способ сделать это — перейти к источнику. Либо документацию библиотеки, если это сторонняя библиотека, либо напрямую из исходного кода и параметров компиляции, если вы сами создали DLL.
Других решений пока нет …