【问题标题】:Use vb6 functions in C# project [duplicate]在C#项目中使用vb6函数[重复]
【发布时间】:2024-01-16 10:33:01
【问题描述】:


我有很多用 vb6 编写的函数。
我在网上搜索了一下,发现是这样的:

[DllImport("C:/MyDll.dll")] .....

但是显示一条错误消息说:

Unable to find an entry point named 'theMethode' in DLL 'C:/MyDll.dll'.

我的问题是,有没有办法做到这一点。
非常感谢

【问题讨论】:

  • 能否请您至少发布其中一种方法?
  • 在那个 DLL 中是否有一个名为 theMethode 的方法?您真的将 DLL 保留在 C: 的根目录中吗?
  • 你的方法 COM 可见吗?如果没有,这个问题的公认答案可能是有益的:*.com/questions/5721071/…
  • 需要使用.net Interop来集成vb6代码。基本上,设置对您的 vb6 库的引用,它将创建 .net 互操作程序集。
  • 不,但没有称为方法的方法,只是为了解释我的sutuation,我写了这段代码。这是 vb6 代码 Public Function blankString() As String blankString = "" End Function 和 c#: [DllImport("C:/dlls/Vb6toCsharp/MyDll3.dll")] public static extern string blankString(); private void button1_Click(object sender, EventArgs e) { String ch ; ch = "sdfns"; MessageBox.Show(ch+""); ch = 空白字符串(); MessageBox.Show(ch+""); }

标签: c# vb6 vb6-migration


【解决方案1】:

使用非.net 汇编的答案是使用Interop。 Microsoft 专门为此目的设计了它。

【讨论】:

  • 谢谢,如果你的意思是我有你加using System.Runtime.InteropServices; ,我已经写好了。
  • 尝试在您的 .net 项目中添加对 vb6 dll 的引用 - 您会看到
  • 我还是有同样的问题。
  • 我认为问题出在我用 vb6(Activex dll) 构建的 dll 中,因为当我使用其他 dll 时,它可以正常工作。所以我会检查一下dll结构,看看有没有问题。谢谢
  • DLL 注册了吗? "regsvr32 dllname.dll"