Как использовать функцию DLL vb6 в C# .NET с помощью фреймворка 4.6.1
я пытаюсь использовать ActiveX VB6 dll в приложении c# .net для тестирования COM, но это дает мне ошибку времени выполнения, что класс не зарегистрирован.
я пробовал регистрироваться как в 32 битном, так и в 64 битном приложении, а также пытался ориентироваться на одно и то же
Что я уже пробовал:
Я создал проект VB6 типа ActiveX dll добавил две функции
Public Function Name(aName As String) MsgBox ("Your Name is " & aName) End Function Public Function TestName(aName As String) As String TestName = " Hello " & aName End Function
Создал DLL из того же проекта.
Затем создал оболочку, используя приведенную ниже команду .
C:\Program файлы (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools>TlbImp.exe C:\Test\TestActiveX\Project1.dll /выход: C:\Test\TestActiveX\out\Project1.dll
Если я выполняю только вышеуказанную операцию, то я не получаю Project1.dll в разделе COM но тогда я регистрирую dll используя приведенный ниже код
C:\WINDOWS\system32>команду regsvr32 C:\Test\TestActiveX\Project1.dll
тогда только я получаю dll в разделе COM внутри диалогового окна VisuaL studio Add Reference
я попробовал добавить ссылку из C:\Test\TestActiveX\out\Project1.dll папка также, но каждый раз, когда я получаю ошибку времени выполнения, как показано ниже.
Система.Время Выполнения.InteropServices.COMException: 'получение фабрики COM-класса для компонента с CLSID {ID} не удалось из-за следующей ошибки: 80040154 класс не зарегистрирован (исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).'
public string ReturnFromCOM() { TestClass testClass = new TestClass(); return testClass.TestName(" Hello "); }
я не в состоянии сделать это, не знаю, чего не хватает в этих шагах. Моя ОС Windows : 64-битная Windows 10 Framework 4.6.1, а также 4.8.1, но созданное консольное приложение с Framework 4.6.1
я даже пытался изменить цель проекта на x64/x86/anyCPU, но это совсем не работает.
F-ES Sitecore
Вам не нужен tlbimp. Просто создайте dll, зарегистрируйте ее с помощью regsvr32, а затем добавьте ссылку через вкладку COM в разделе Add Reference. COM не работает так, как .net, он основан на реестре, а не на файле, поэтому вы не ссылаетесь непосредственно на dll, он не зависит от местоположения, но должен оставаться там, где вы его зарегистрировали.