【问题标题】:How do I call a visual basic 6.0 method in c#?如何在 c# 中调用 Visual Basic 6.0 方法?
【发布时间】:2011-05-17 16:14:41
【问题描述】:

我想从 c# (visual studio 2008) 调用一个用 Visual Basic 6.0 编写的方法。可能吗?我该怎么做?

【问题讨论】:

    标签: c# dll vb6 methods com-interop


    【解决方案1】:

    最简单的方法是将 VB6 代码编译为 ActiveX DLL。 然后,您可以在 .net 项目中引用该 DLL。 (Visual Studio 可以正确引用 ActiveX DLL。)

    【讨论】:

    • +1。在 VB6 中创建 ActiveX DLL 的分步说明是 heregood tutorial in the VB6 manual。然后只需在 C# 项目中引用 VB6 ActiveX DLL - 它将列在 Add Reference 对话框的 COM 选项卡上。
    【解决方案2】:
    1. 将您的 VB6 DLL 编译为 activex dll

    2. 注册使用 -> regsvr32 "Full Name And Path of newcompiled vb6 dll".(使用运行对话框或命令提示符注册)

    3. 在 .net 中添加引用 - 选择 com 选项卡并搜索这个新注册的 dll

    4. 现在您可以使用此 dll。

    注意:

    每当您对 vb6 代码进行任何更改时,您都必须再次执行上述步骤。

    要注销 vb6 dll,请使用 regsvr32 "Name and path" /u

    欢迎来到(dll)地狱

    【讨论】:

      【解决方案3】:

      是的。有可能的。调用它就像调用用 Visual Basic 编写的方法一样。您需要对程序集的引用,然后您只需使用正确的命名空间调用它。

      【讨论】:

      • VB6 不创建程序集也不发出 .NET 元数据。
      • @Saeed:似乎这个问题最初并不是针对 VB 的版本。
      • @Ben Voigt,我可以看到它是“visual basic6.0.”特有的,其他版本很容易,OP可以简单地测试它:)
      • @Saeed:看到问题下的“12 分钟前编辑”(或类似内容)了吗?看到这个答案上的日期,差不多一个月前?
      • @Ben Voigt,是的,它目前已编辑,但你想对我说什么?我的笔记现在是正确的,直到史蒂夫修复他的答案或删除它。
      【解决方案4】:

      当且仅当 VB6 代码被编译为 COM 服务器时才有可能。

      【讨论】:

      • VB6中是否有编译成COM服务器的选项?我没有VB6.0,但我认为它并不像你想象的那么容易。
      • @Saeed:其实很简单。项目选项中有一个复选框,然后您必须确保所讨论的函数是类模块中的方法,而不是代码模块中的方法(并确保类模块不是私有的)。我不能完全确定,因为已经很久了,但我认为这就是所需要的。
      • 如何获取 COM 服务器来编译 VB6 代码
      • @ratty:你有VB6程序的源代码吗?你有安装VB6吗?
      • @ratty:好的,您是否按照我之前评论中的建议进行操作?您尝试调用的函数是类模块(不是代码模块)的一部分吗?您是否设置了项目设置来构建 COM (OLE) 服务器?
      【解决方案5】:

      .NET 可以像使用任何 COM DLL 一样使用您的 VB6 DLL。

      只需单击“添加引用”,如果您的 DLL 已注册,则选择“COM”选项卡,或者只需单击“浏览”选项卡以直接选择文件。

      如果与 COM 兼容,Visual Studio 将自动创建一个 COM 互操作程序集,该程序集将充当 VB6 DLL 的 .NET 包装器。

      您必须将 VB6 dll 和 Interop 程序集与您的程序一起部署。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多