Ссылка на dll не может быть добавлена ​​

Когда я добавляю файл .dll как ссылка в приложении C # показывает ошибку:

Ссылка на «.... dll» не может быть добавлена. Пожалуйста, убедитесь, что файл доступен и что это допустимая сборка или COM компонент.

ILDissassembler говорит, что нет действительного заголовка CLR, поэтому я пытаюсь зарегистрировать его с помощью regsvr32, и это дает мне еще одну ошибку:

Модуль "" был загружен, но вызов DLLRegisterServer завершился неудачно с код ошибки '0x80004005'

Я использую окончательную версию VS2010 на 64-битной машине с Windows 7. В чем может быть проблема?

Спасибо за любые подсказки / ответы

92
задан osvein 28 December 2013 в 18:54
поделиться

2 ответа

Я использовал обходчик зависимостей, чтобы проверить внутренние ссылки, которые имелись в dll. Оказывается, ему нужна была среда выполнения VB msvbvm60.dll, и, поскольку в моем dev-боксе она не установлена, я не смог зарегистрировать ее с помощью regsvr32

. Это, кажется, ответ на мой исходный вопрос.

12
ответ дан 24 November 2019 в 06:34
поделиться

Вы можете добавить 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 здесь ).

18
ответ дан 24 November 2019 в 06:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: