c# - 在 VB6 应用程序中使用 .NET dll

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

最佳答案

我想给你更多的细节,以便 .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/

相关文章:

c# - 平滑手绘曲线

vb6 - 调试 Visual Basic 运行时错误 5

vb6 - VB6中如何计算标题栏的高度?

c# - 注册免费 COM - 隔离 COM 引用 - 缺少值 '(Default)'

c# - 如何在 C# 中获取两个字符串数组之间的差异?

c# - Excel Interop SaveAs() 因大量电子表格数据而挂起

c# - 如何在reportviewer控件中传递报表参数

winapi - Windows 10 中的 Win32 工具提示灰线错误

c++ - 如何从 VB6 调用 C++ 类库

c# - WPF c# 设置样式带参数