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

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

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

你需要生成tbl - type library

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

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

您可以在如何从Visual Basic 6.0中调用Visual Basic .NET或Visual Basic 2005程序集中引用它

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