尝试从 VB 6 调用 C# COM 对象 [关闭]

2024-04-06

我试图从 VB 6 调用 C# COM 对象,但收到错误:453,指出很难找到 DLL 的入口点。 我将 C# 中的所有模块设置为公共,并将 COM 可见性设置为 TRUE,注册了我的 .dll 文件,并且拥有可用的类型库文件,并且还调用了 P/Invoke 调用。我仍然收到错误。我在下面粘贴我的代码

VB6:

Private Declare Function DisplayCForm Lib "C:\Users\LP027077\Documents\Visual Studio 2010\Projects\COMWorld\COMWorld\bin\Debug\COMWorld.dll" ()
Private Sub Command1_Click()
DisplayCForm
End Sub

C#:

 namespace COMWorld
{

    [Guid("23047247-38D3-464F-A845-0D42A7ACD622")]
    [ComVisible(true)]
    public class COMObject
    {
        [DllImport("Kernel32.dll", EntryPoint = "GetConsoleWindow",SetLastError = true)]
        internal static extern IntPtr GetConsoleWindow();
        public void COMModule()
        {
            Form f1 = new Form();
            f1.Text = "Hello VB6 from c# .NET";
        }
    }
}

请在这方面帮助我! 提前致谢


当我需要从 VB 6 代码调用 .Net COM 对象上的方法时,我通常执行以下操作:

  1. 将 COMVisible 属性添加到我的 .Net 类和程序集中。
  2. 构建并注册我的 .Net 程序集。
  3. 通过 Project | 添加对我的 VB 项目中的 .Net 程序集的引用参考文献菜单。
  4. 在 VB 代码中使用“New”关键字,使用其 progid 创建 .Net 类的实例,并使用它来调用所需的方法。

.Net 程序集的 progid 默认为程序集名称加上以句点分隔的类名称。在 VB 中添加对程序集的引用后,它应该出现在 VB IDE 的 Intellisense 和对象浏览器中。

要将您的示例与程序集名称“COMWorld”、名为“COMObject”的类以及名为“COMModule”的方法一起使用,我的 VB 代码将如下所示:

Private Sub Command1_Click()

    Dim class1 As New COMWorld.COMObject
    class1.COMModule

End Sub

免责声明:恐怕我的 MacBook Air 上没有 VB 6 IDE,因此代码可能无法 100% 经编译器验证!

希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试从 VB 6 调用 C# COM 对象 [关闭] 的相关文章

随机推荐