Вызов vb6 dlls из c # - PullRequest
       44

Вызов vb6 dlls из c #

6 голосов
/ 13 февраля 2012

Я пытался вызвать dll vb6 из приложения C sharp без использования реестра. Я хочу использовать путь DLL, используя его. Я не могу создать объект класса vb dll. Пожалуйста помоги! Код, который я написал до сих пор, выглядит следующим образом:

Assembly assem = Assembly.LoadFile("dll path");
Type classType = assem.GetType("classname");
MethodInfo method = classType.GetMethod("show"); //My methos is called show
method.Invoke(null,null); // I have to invoke the method using class object, which I am unable to create

Ответы [ 3 ]

6 голосов
/ 13 февраля 2012

VB6 DLL - это COM DLL. Обычно вы регистрируете DLL (в реестре), а затем добавляете ссылку на VB6 DLL из вашего проекта .NET.

В этой статье MSDN приводится пошаговое руководство по использованию COM без регистрации из приложения .Net.

2 голосов
/ 13 февраля 2012

Ваш VB6 dll, как отмечает MarkJ, является COM Dll, и его обычно необходимо зарегистрировать с помощью regsvr32, прежде чем вы сможете его использовать.

После того, как вы зарегистрируетесь, вы можете добавить ссылку на нее так же, как и в .NET dll, т.е. щелкните правой кнопкой мыши на ссылке в проекте, нажмите Добавить ссылку, затем выберите вкладку COM в окне и посмотритедля вашего имени COM Dll.

Тогда вы сможете использовать его как ссылку .NET.
Вот пример использования ссылки COM на Microsoft Excel.
Как: использовать COM Interop для создания электронной таблицы Excel

Если вы специально хотите позднее связывание, тогда ваша dll все еще должна быть зарегистрирована, но вы не добавляете ссылку вручную, вы используете Activator.CreateInstance() чтобы получить экземпляр вашего COM-объекта.
Вызов COM-компонента из C # с использованием позднего связывания

1 голос
/ 13 февраля 2012

Предполагая, что метод show находится в таблице экспорта в dll, попробуйте использовать DllImportAttribute для вызова метода show.

...