Я хочу использовать DLL VB.NET в программе VB6. Является ли это возможным? - PullRequest
5 голосов
/ 12 февраля 2010

У меня проблемы при использовании DLL VB.NET в программе VB6. Я уже создал свою dll с помощью GuidAttribute, использовал RegAsm для создания tlb и добавил его к ссылкам моей программы VB6. Проблема заключается в том, что при попытке создать объект с помощью функции CreateObject появляется следующая ошибка: «компонент ActiveX не может создать объект».

Я не знаю, пропускаю ли я какое-либо объявление в VB.NET, чтобы использовать его как dll, или я не правильно использую функцию CreateObject.

Ответы [ 3 ]

2 голосов
/ 12 февраля 2010

Полная статья о вызове классов .Net из Visual Basic 6: http://www.devsource.com/c/a/Using-VS/Calling-Net-Classes-from-Visual-Basic-6/

Создание COM DLL с VS 2005: обзор: http://www.codeproject.com/KB/COM/VS2005ComDllWalkThru.aspx

0 голосов
/ 12 февраля 2010

Трудно сказать с информацией, которую вы предоставили, но похоже, что вы не сделали сборку доступной для поиска. От MSDN :

Под ключом HKCR \ CLSID {0000… 0000}, значение по умолчанию установлено в ProgID класса, и два новых имени значения, класс и сборка, добавляются. Среда выполнения читает значение сборки из реестра и передает его Средство разрешения сборки во время выполнения. распознаватель сборок пытается найти сборка, основанная на сборке информация, такая как имя и номер версии. Для сборки решатель, чтобы найти сборку, Сборка должна быть в одном из следующие местоположения:

Глобальный кеш сборок (должен быть сборка со строгим именем).

В каталоге приложения. Сборки, загруженные из приложения путь доступен только из того применение.

Вдоль пути к файлу, указанного с помощью Параметр / codebase для Regasm.exe.

0 голосов
/ 12 февраля 2010

Вы должны убедиться, что ваш компонент правильно зарегистрирован для взаимодействия. На вкладке свойств проектов есть опция для включения этой опции, вы находитесь на правильном пути с созданием типа lib, на который вы можете ссылаться в vb6 Вы можете просто добавить ссылку на него, как и любой другой компонент. однако на самом деле зарегистрируйте его, а не создавайте файл tlb.

Когда вы регистрируете сборку для использования COM, Regasm.exe добавляет записи в реестр на локальном компьютере. Более конкретно, он создает зависимые от версии ключи реестра, которые позволяют нескольким версиям одной и той же сборки запускаться рядом на компьютере. При первой регистрации сборки создается один ключ верхнего уровня для сборки и создается уникальный подраздел для конкретной версии. Каждый раз, когда вы регистрируете новую версию сборки, Regasm.exe создает подраздел для новой версии.

После регистрации сборки с помощью Regasm.exe вы можете установить ее в глобальном кэше сборок, чтобы ее можно было активировать с любого COM-клиента. Если сборка будет активирована только одним приложением, вы можете поместить ее в каталог этого приложения.

если вас интересует, что инструмент генерирует для реестра, используйте

regasm {Путь к вашей сборке} .dll /regfile:myTest.reg

...