Как решить "пожалуйста, убедитесь, что файл доступен и что это допустимая сборка или COM-компонент"?
Я создаю проект с OpenCV в C#. Для этого требуется файл dll с именем cvextern.dll
. но при добавлении этого файла в качестве ссылки появляется следующее сообщение: -
ссылка " cvextern.dll " не может быть добавлен, убедитесь, что файл доступен и что это допустимая сборка или COM-компонент.
Я устал от поиска, я провел последние 2 дня в поисках решения этой проблемы
6 ответов
файл является собственной DLL, что означает, что вы не можете добавить его в проект .NET через ссылку Add... вы можете использовать его через DllImport (см. http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute.aspx)
в моем случае мне пришлось зарегистрировать dll - > open cmd (консоль) с правами администратора и ввести: regsvr32 "foo.DLL-файл"
убедитесь, что необходимые библиотеки DLL экспортируются (или копируются вручную) в папку bin при создании приложения.
У меня была такая же программа, надеюсь, это может помочь.
Я использую Windows 7, Откройте командную строку - > Запуск от имени администратора. зарегистрировать <...>.файл DLL.
Почему Запуск от имени администратора, вы можете зарегистрировать свою <...>.dll с помощью запуска при запуске Windows, но все же ваша dll работает только как пользователь, даже ваша учетная запись является администратором.
теперь вы можете добавить свой <...>.dll в проекте - >добавить ссылку - >обзор
спасибо
посмотреть здесь в ответ TheMattster. Я реализовал его, и это сработало как заклинание. В двух словах, его решение предлагает добавить com dll в качестве ресурса в проект (так что теперь он компилируется в dll проекта), и при первом запуске напишите его в файл (т. е. dll-файл, который я хотел там в первую очередь).
следующее взято из его ответа.
Шаг 1) добавьте DLL в качестве ресурса (ниже как "Ресурсы.DLL-файл"). Для этого откройте свойства проекта, перейдите на вкладку "ресурсы" выберите "Добавить существующий файл" и добавить DLL в качестве ресурса.
Шаг 2) Добавьте имя DLL в качестве строкового ресурса (ниже как " ресурсы.параметр dllname.)"
Шаг 3) Добавьте этот код в основную форму-load:
if (!File.Exists(Properties.Resources.DllName))
{
var outStream = new StreamWriter(Properties.Resources.DllName, false);
var binStream = new BinaryWriter(outStream.BaseStream);
binStream.Write(Properties.Resources.DllFile);
binStream.Close();
}
моя проблема заключалась в том, что мне не только пришлось использовать com dll в моем проекте, мне также пришлось развернуть его с помощью моего приложения с помощью ClickOnce и без возможности добавить ссылку для этого в моем проекте вышеприведенное решение практически единственное, которое сработало.
' It ' требует dll-файл с именем cvextern.файл DLL. "Это" может быть либо ваш собственный cs-файл, либо какая-либо другая сторонняя dll, которую вы используете в своем проекте.
чтобы вызвать собственные библиотеки DLL в свой собственный cs-файл, скопируйте dll в корневой каталог\lib вашего проекта и добавьте его в качестве существующего элемента. (Добавить-существующий элемент) и использовать Dllimport с правильным расположением.
для третьей стороны скопируйте родную библиотеку в папку, где находится сторонняя библиотека, и добавьте ее как существующий элемент.
после построения убедитесь, что необходимые библиотеки DLL отображаются в папке сборки. В некоторых случаях он может не отображаться или заменяться в папке сборки. Удалите папку Build вручную и создайте снова.