在VB6应用程序中使用.NET dll

时间:2012-09-17 18:42:38

标签: c# vb6

我在c#.net中写了一个dll,它在应用程序中调用另一个第三方.NET dll。当我使用c#.NET编写的控制台应用程序测试它时,使用下面的代码时,这很好用。

 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);

请注意,有些文件也会在最初加载dll的位置加载:

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

但问题是,当我尝试使用VB6调用它时,我收到一个错误,它无法加载第三方dll。请帮忙,因为我似乎不知道发生了什么。

2 个答案:

答案 0 :(得分:5)

我想给你更多细节,以便.NET Assembly暴露给COM

您需要生成tbl - type library

使用RegAsm /tlb: MyLIB.tlb MyLIB.dll

指南可以向.NET公开.NET类型,并确保您能够应对这种情况。 例如声明 ComVisibleAttribute ,要求公共默认构造函数对COM可见,例如在

你可以参考一下 How to call a Visual Basic .NET or Visual Basic 2005 assembly from Visual Basic 6.0

答案 1 :(得分:3)

您需要在程序集上指定ComVisibleAttribute才能从VB6调用它。