【问题标题】:How to call C++ constructor from Visual Basic如何从 Visual Basic 调用 C++ 构造函数
【发布时间】:2011-12-12 04:57:20
【问题描述】:

在我的 Visual Basic 代码中调用 C++ 构造函数时遇到问题。 DLL 已正确导入,但这一行尤其给我带来了麻烦:

Dim myobj As New MyObject("param1", "param2", "param3")

以及对应的C++构造函数:

MyObject::MyObject(System::String ^ p1, System::String ^ p2, System::String ^ p3)

有什么建议吗?

【问题讨论】:

  • 您看到了什么错误或结果?
  • “编译错误:语法错误”
  • VBA 不支持带参数的构造函数。
  • COM 不支持带参数的构造函数。
  • VB 只支持 VB 类和 COM 对象。您将不得不将 DLL 重新写入一个完整的 COM 对象(或编写一个单独的 COM 包装 DLL 以在内部访问原始 DLL)。 COM 对象不允许构造函数参数,因此它必须公开一个公共方法,您可以在创建对象后调用该方法以将您的值传递给。

标签: c++ vba dll com


【解决方案1】:

你不能。根本不支持这种方式。

最简单的方法是将构造函数转换为函数(例如Initialize())。

【讨论】:

    【解决方案2】:

    你不能 - 类将使用默认构造函数进行实例化。如果您需要参数化构造,您有两个选择 - 向类添加“初始化”参数化方法或使用“使用此参数实例化第一个类”方法添加工厂类。

    【讨论】:

      【解决方案3】:

      使用抽象接口和制造工厂来生成对象。它还将保持您的代码和 dll 之间的抽象。阅读这篇文章 http://www.codeproject.com/KB/cpp/howto_export_cpp_classes.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-05
        • 1970-01-01
        • 2018-05-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多