Где разместить неуправляемую DLL для импорта в программу на C #? - PullRequest
1 голос
/ 21 июня 2010

Это, должно быть, действительно глупый вопрос, но я все еще очень зеленый, когда дело доходит до C #.

В любом случае, у меня есть DLL, и я импортирую ее с помощью строки вроде этой:

[DllImport(@"MyCoolDll")]

Я поднял это прямо из демонстрационного приложения, предоставленного поставщиком, но он продолжает жаловаться, что не может найти DLL.Фактическая ошибка (из Visual Studio 2010) выглядит следующим образом:

Unable to load DLL 'MyCoolDll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

Я попытался поместить скомпилированную DLL в папки bin / debug и bin / release.Я даже пытался скопировать его в system32, но, похоже, ничего не работает.

Есть идеи?

Ответы [ 4 ]

4 голосов
/ 21 июня 2010

Ваша DLL может иметь зависимости, которые также должны быть загружены.Вы проверяли это?

3 голосов
/ 21 июня 2010

Я знаю, что вы должны дать полное имя файла. Так

[DllImport(@"MyCoolDll.dll")]

Он должен работать из папок bin \ debug или bin \ release.

Обновление

В этом я научился импортировать неуправляемые библиотеки DLL. Если это было тестовое приложение, которое работает правильно, проверьте папку bin \ debug, чтобы увидеть, что отличается от вашего Возможно, на дополнительную DLL ссылаются? Также проверьте все ссылки в примере приложения, чтобы убедиться, что вы не пропустили ни одного.

0 голосов
/ 18 июня 2013

Ключом для меня было посмотреть пути, перечисленные в выводе консоли Visual Studio Build, чтобы увидеть, где размещаются двоичные файлы. Когда я обнаружил это, я знал, куда копировать неуправляемую DLL, и это исправило ошибку «Невозможно загрузить DLL».

0 голосов
/ 21 июня 2010

Насколько я знаю, вы должны предоставить расширение:

[DllImport(@"MyCoolDll.dll")]

Я обычно храню эти dll локально в двоичных файлах программы (так в bin \ Debug for development)

...