Когда я добавляю файл .dll как ссылка в приложении C # показывает ошибку:
Ссылка на «.... dll» не может быть добавлена. Пожалуйста, убедитесь, что файл доступен и что это допустимая сборка или COM компонент.
ILDissassembler говорит, что нет действительного заголовка CLR, поэтому я пытаюсь зарегистрировать его с помощью regsvr32, и это дает мне еще одну ошибку:
Модуль "" был загружен, но вызов DLLRegisterServer завершился неудачно с код ошибки '0x80004005'
Я использую окончательную версию VS2010 на 64-битной машине с Windows 7. В чем может быть проблема?
Спасибо за любые подсказки / ответы
Я использовал обходчик зависимостей, чтобы проверить внутренние ссылки, которые имелись в dll. Оказывается, ему нужна была среда выполнения VB msvbvm60.dll, и, поскольку в моем dev-боксе она не установлена, я не смог зарегистрировать ее с помощью regsvr32
. Это, кажется, ответ на мой исходный вопрос.
Вы можете добавить DLL (или EXE) в проект, только если это сборка .NET. В противном случае вы увидите это сообщение об ошибке.
regsvr32 также делает определенные предположения о структуре и экспортируемой функции в DLL.Прошло некоторое время с тех пор, как я его использовал, но это связано с регистрацией COM-серверов, поэтому должны быть доступны определенные точки входа. Если regsvr32 дает сбой, DLL не предоставляет эти точки входа, а DLL не содержит компонент COM.
Единственный шанс использовать DLL - это импортировать ее, как любой другой двоичный файл, отличный от .NET, например когда вы используете определенные API Win32. Есть старая статья журнала MSDN, которая может быть полезна. Информацию о том, где взять статью, см. В следующем обновлении.
Обновление от 12 марта 2018 г .: Ссылка на журнал MSDN больше не работает, как это было в августе 2010 г. Статья Джейсона Кларка озаглавлена «Столбец .NET: вызов библиотек DLL Win32 в C # с помощью P / Invoke» . Он был опубликован в июльском выпуске журнала MSDN Magazine за 2010 год. В «Wayback Machine» сейчас есть артикул здесь (форматирование ограничено). Полный выпуск журнала MSDN за июль 2010 г. доступен здесь (только формат HCM, инструкции по использованию файлов HCM здесь ).