Не удалось загрузить файл или сборку C ++ DLL из надстройки .Net - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть надстройка .Net, и в ней я ссылаюсь на DLL, которую я сделал в C ++ / CLI.DLL была разработана с использованием OpenCV API - так что теперь мое приложение .Net может использовать преимущества классных графических возможностей, предлагаемых OpenCV.

Проблема возникает при развертывании надстройки на других компьютерах.Когда пользователь исполняет часть программы, которая специально вызывает мою C ++ DLL, он жалуется на отсутствие ссылки:

enter image description here

Я подозреваю, что код нена самом деле знаю, где находятся библиотеки DLL, но в моей среде разработки все (очевидно) работает, поскольку у меня будет настроена среда, отличная от вашего стандартного ПК для сборки.

Что мне здесь не хватает?Как я могу успешно вызывать библиотеки DLL, созданные в C ++, из надстройки C #?Принимая во внимание, что надстройки должны упростить настройку программного обеспечения, такого как Office и т. Д. Это очень важно - я должен иметь возможность включать не-.NET DLL в мой проект, и мой код сможет их найти.

Моя dll - это простая dll, а не dll, совместимая с COM (может быть, так и должно быть?), Или я должен декорировать свой код C ++ с помощью __declspec (dllexport) а-ля https://docs.microsoft.com/en-us/cpp/build/exporting-from-a-dll-using-declspec-dllexport?view=vs-2017

1 Ответ

0 голосов
/ 06 февраля 2019

Итак, 2 вещи

  • Используйте Dependancy Walker , чтобы определить любые зависимости от вашей dll и dll, которые она использует далее по иерархии «дерева».Я нашел 2, которые отсутствовали, и это не было очевидно без этого полезного инструмента.Не огорчайтесь результатами, которые он вам дает, просто обратите внимание на отсутствующие dll, на которые он жалуется.

  • Убедитесь, что на вашу dll ссылаются внутри вашего проекта, а не за ее пределами вкакая-то другая папка, в которой вы ее создали.

Это решило мою проблему - в общем, просто убедитесь, что ваши dll находятся на том же пути, что и ваш исполняемый файл.

...