Consuming .NET dll in VB6 application

2019-06-28 07:43发布

I wrote a dll in c#.net that calls another third party .NET dll within the application. This works fine when I tested it with a console application written in c#.NET as well using the code below:

 Assembly u = Assembly.LoadFrom(dllLocation);
 Type t = u.GetType("MyLIB.CLass");
 MethodInfo m = t.GetMethod("Method");
 object[] myparam = new object[1];
 myparam[0] = fileLocation;
 result = (string)m.Invoke(null, myparam);

Please note that some files are loaded within the location where the dll was initially loaded as well using:

  string path = Assembly.GetExecutingAssembly().Location;
  path = Path.GetDirectoryName(path);

But the issue is that when I tried to call it using VB6, I get an error that it cannot load the third party dll. Please help as I seem not to know what's going on.

标签: c# vb6
2条回答
【Aperson】
2楼-- · 2019-06-28 08:08

I would thought to give you more detail, in order .NET Assembly expose to COM

you need to generate the tbl - type library

using RegAsm /tlb: MyLIB.tlb MyLIB.dll

There are Guidelines to expose .NET Types to COM and make sure you cope with that. such as declare ComVisibleAttribute , require a public default constructor to be visible to COM , such are in

you can refer that in How to call a Visual Basic .NET or Visual Basic 2005 assembly from Visual Basic 6.0

查看更多
ら.Afraid
3楼-- · 2019-06-28 08:08

You need to specify the ComVisibleAttribute on the assembly in order to call it from VB6.

查看更多
登录 后发表回答