Member 10020245 Ответов: 1

3-й сторонний API не находит .dll


Я пытаюсь использовать сторонний API для взаимодействия с цифровой камерой.
Камера от FLIR-это 12-мегапиксельная цифровая камера Blackfly-S.
Их API называется Spinnaker и доступен через файл .dll.

Они предоставляют пример кода, который компилируется с помощью Visual Studio 2015 с целевой платформой x64 и целевой платформой Framework 4.5. файл x64 .dll помещается в папку .exe.
На ноутбуке Alienware под управлением Windows 10 и VS 2017 пример кода работает нормально.
Пример кода компилируется и запускается без ошибок с подключенным оборудованием камеры.
Однако, когда я перемещаю идентичный VS-код (.sln) на другой компьютер под управлением Windows 10 и VS 2017, код компилируется без ошибки, но .dll не будет загружаться-с сообщением "Не могу найти .dll или зависимости". На .библиотека DLL находится в самом .папку exe-файла в обоих случаях.

На ноутбуке Alienware, когда я открываю примеры приложений, свойства проекта/Application/Target Framework/
Я вижу варианты, которые включают в себя 4.5, 4.51, 4.51, 4.6, 4.61, 4.62 ... но не выше.
Alienware-это более старая машина, и VS там был обновлен на протяжении многих лет до более поздних версий VS.

На NUC vs 2017 был установлен совсем недавно, и параметры раскрывающегося списка Target Framework-это только выбор .net Core для любого нового приложения.
Тем не менее, код .sln, который я перемещаю из Alienware в NUC, выбирается фреймворк 4.5, и код успешно компилируется на NUC.
Но не будет работать из-за .dll.
Если я попытаюсь загрузить .net framework 4.5, 4.51, 4.52 на ПК NUC, загрузка не позволит этого сказать, что у меня уже есть более высокий фреймворк.

Любая помощь будет оценена по достоинству.
Jim<

Что я уже пробовал:

Изменение структуры на NUC
Перемещение только файла .exe из Alienware в NUC (то же самое .ошибка dll)

1 Ответов

Рейтинг:
0

Gerry Schmitz

Обычно в решении задается "ссылка" на конкретную библиотеку dll; "свойства" этой "ссылки" затем показывают, "откуда" на эту библиотеку ссылаются.

Вы не сделали никакой "ссылки" на ссылку; просто вы перемещаете файлы.

"Копирование решения" не будет копировать файлы, на которые ссылаются "вне" решения.

Вы должны проверить "ссылку" на dll в копии, чтобы увидеть, куда она указывает.

Если вы динамически загружаете dll-файлы, то ваш "патчинг" отключен.