Приложение C # не может найти DLL локально - PullRequest
0 голосов
/ 10 июня 2019

У меня есть 32-битное приложение, которое использует DLL, созданную кем-то другим, давайте назовем это xyz.dll.Эта DLL имеет зависимости от нескольких других старых DLL.Все библиотеки сохраняются в той же папке, где находится мое приложение.Мое приложение компилируется нормально, но во время выполнения выдает ошибку "Не удалось загрузить файл или сборку" xyz.dll "или одну из его зависимостей. Не является допустимым приложением Win32"

У меня есть 2 обходных пути, которые кажутсяДля решения этой проблемы.В первом я переместил библиотеки DLL в отдельную папку и создал командный файл для запуска приложения.Пакетный файл сначала добавляет путь к dll в среду, затем вызывает приложение.Интересно, что если я оставлю dll в одной папке с приложением и просто добавлю это в путь, это не сработает.

Второй способ также переместил dll в папку и добавил этот путь в переменную среды пользователя.и запустить exe напрямую.Любое из этих решений требует дополнительных шагов, что не идеально для развертывания приложений.Мне интересно, есть ли лучший способ?

1 Ответ

1 голос
/ 11 июня 2019

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

Когда вы перемещаете dll в другую папку и добавляете путь к этой папке в переменную среды PATH, приложение работает. В этом случае приложение не пытается загрузить dll, который вы переместили в другую папку. Если бы это было так, это бы не получилось. Он должен загружать другую версию библиотеки DLL, которая находится в одном из путей к папкам в переменной среды PATH.

Просто используйте поиск Windows, чтобы найти все копии вашего файла DLL на вашем компьютере. Вы сможете определить, где находится эта другая DLL.

...