4

我在 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。请帮忙,因为我似乎不知道发生了什么。

4

2 回答 2

6

我想给你更多细节,以便 .NET 程序集向 COM 公开

你需要生成tbl - type library

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

有一些指南可以将 .NET 类型暴露给 COM,并确保您能够应对。例如声明ComVisibleAttribute ,要求公共默认构造函数对 COM 可见,例如在

您可以参考 如何从 Visual Basic 6.0 调用 Visual Basic .NET 或 Visual Basic 2005 程序集

于 2012-09-17T18:53:09.847 回答
3

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

于 2012-09-17T18:45:23.170 回答