Проблемы при добавлении ссылки на компонент COM в проект VB.NET - PullRequest
2 голосов
/ 24 сентября 2008

У меня есть сторонний COM dll, который я пытаюсь добавить в проект vb.net (2008 express). Я поместил DLL в C: \ WINDOWS \ system32 \ и зарегистрировал ее с помощью "regsvr32 vxncom.dll". Когда я захожу в проекты> добавить ссылку и перехожу на вкладку COM, она отображается в списке доступных компонентов / библиотек. Но когда я выбираю библиотеку и нажимаю «ОК», Visual Studio жалуется: «Невозможно добавить ссылку на библиотеку vxncom 4.0. Не удалось зарегистрировать библиотеку типов ActiveX« C: \ WINDOWS \ system32 \ vxncom.dll »».

Проект, в котором я делаю это, является примером, предоставленным людьми, которые распространяют dll. Компонент также не может быть добавлен, когда я запускаю новый (пустой) проект vb.net.

ОБНОВЛЕНИЕ 1:

Я запустил средство обхода зависимостей для DLL и вот что я получил в журнале ошибок:

Ошибка: по крайней мере один модуль имеет неразрешенный импорт из-за отсутствия функции экспорта в неявно зависимом модуле.

Кажется, что рассматриваемый модуль - libeay32.dll, но он уже существует в C: \ WINDOWS \ system32.

ОБНОВЛЕНИЕ 2:

Я зашел на сайт openssl , скачал и использовал их установщик для обновления libeay32.dll. Я снова запустил обходчик зависимостей на vxncom.dll, и ошибок не было. Вернулся в визуальную студию, и он все еще не хотел добавлять ссылку. Точно такая же ошибка, как и раньше.

Ответы [ 3 ]

3 голосов
/ 24 сентября 2008

Возможно, DLL VB пытается зарегистрироваться, зависит от другой DLL, которой нет. Вы можете подтвердить это (или исключить это), используя бесплатный инструмент Dependency Walker от http://www.dependencywalker.com/

ОТВЕТ НА ОБНОВЛЕНИЕ 1: Похоже, что существует несоответствие между версией libeay32.dll, установленной в вашей системе, и той, которую ожидает ваш компонент - зависит от того, что ваш компонент ищет функцию, которой нет. Я бы проверил номер версии libeay32, а затем связался с поставщиком и спросил, какие версии они поддерживают.

0 голосов
/ 21 декабря 2010

Если вы не исправили это или перешли к альтернативам; и, следуя ответу Джеффма, должным образом ли зарегистрирована libeay32.dll в операционной системе? Переустановка / восстановление обычно устраняет проблему такого типа (я часто вижу ее в MS Office и MapPoint, где COM-объекты иногда отменяют регистрацию по тем или иным причинам.)

0 голосов
/ 09 июня 2009

Просто подумайте - вы можете получить более подробное сообщение об ошибке, если создадите собственную PIA с помощью tlbimp.exe, а не полагаетесь на IDE, чтобы сделать это за вас.

...