У меня есть сторонняя COM-библиотека, которую я пытаюсь добавить в проект vb.net (2008 express). Я поместил dll в C: \ WINDOWS \ system32 \ и зарегистрировал ее с помощью regsvr32 vxncom.dll. Когда я перехожу в проекты> добавляю ссылку и перехожу на вкладку COM, он отображается в списке доступных компонентов / библиотек. Но когда я выбираю библиотеку и нажимаю ОК, Visual Studio жалуется: «Не удалось добавить ссылку на 'vxncom 4.0 Library'. Не удалось зарегистрировать библиотеку типов ActiveX 'C: \ WINDOWS \ system32 \ vxncom.dll'».
Проект, в котором я это делаю, - это пример, предоставленный людьми, которые распространяют эту dll. Компонент также не удается добавить, когда я запускаю новый (пустой) проект vb.net.
ОБНОВЛЕНИЕ 1:
Я запустил dependency walker для рассматриваемой DLL, и вот что я получил в журнале ошибок:
Ошибка: по крайней мере один модуль имеет неразрешенный импорт из-за отсутствия функции экспорта в неявно зависимом модуле.
Рассматриваемый модуль кажется libeay32.dll, но он уже существует в C: \ WINDOWS \ system32.
ОБНОВЛЕНИЕ 2:
Я зашел в сайт openssl, загрузил и использовал их установщик для обновления libeay32.dll. Я снова запустил dependency walker на vxncom.dll, и ошибок не было. Вернулся в визуальную студию, но все еще не хотел добавлять ссылку. Точно такая же ошибка, как и раньше.





Возможно, DLL, которую VB пытается зарегистрировать, зависит от другой DLL, которой нет. Вы можете подтвердить это (или исключить это) с помощью бесплатного инструмента Dependency Walker от http://www.dependencywalker.com/
ОТВЕТ НА ОБНОВЛЕНИЕ 1: Похоже, есть несоответствие между версией libeay32.dll, установленной в вашей системе, и версией, которую ожидает ваш компонент. Зависит от того, что ваш компонент ищет функцию, которой нет. Я бы проверил номер версии libeay32, а затем связался бы с поставщиком и спросил, какие версии они поддерживают.
Просто подумайте - вы можете получить более подробное сообщение об ошибке, если создадите собственную PIA с помощью tlbimp.exe, вместо того, чтобы полагаться на IDE, которая сделает это за вас.
Предполагая, что вы не исправили это или перешли к альтернативам; и, следуя ответу jeffm, является ли libeay32.dll правильно зарегистрированным в операционной системе? Повторная установка / восстановление обычно решает этот тип проблемы (я часто вижу это в MS Office и MapPoint, где COM-объекты иногда отменяют регистрацию по той или иной причине).
Я запустил dependency walker для рассматриваемой DLL, и вот что я получил в журнале ошибок: Ошибка: по крайней мере один модуль имеет неразрешенный импорт из-за отсутствия функции экспорта в неявно зависимом модуле. Рассматриваемый модуль кажется libeay32.dll, но он уже существует в C: \ WINDOWS \ sy ...