我在 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 程序集暴露给 COM
您需要生成tbl - 类型库
使用 RegAsm/tlb: MyLIB.tlb MyLIB.dll
有指南将 .NET 类型公开给 COM 并确保您能够应对。 例如声明 ComVisibleAttribute ,要求公共(public)默认构造函数对 COM 可见,例如
你可以在 How to call a Visual Basic .NET or Visual Basic 2005 assembly from Visual Basic 6.0
关于c# - 在 VB6 应用程序中使用 .NET dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12465306/