gpt4 book ai didi

c# - 在没有头文件的情况下声明 COM 接口(interface)指针

转载 作者:太空宇宙 更新时间:2023-11-04 14:19:41 30 4
gpt4 key购买 nike

我正在使用 C# 和 WinForms 编写应用程序。我有第三方提供的 ActiveX 控件。我将 ActiveX 控件拖到窗体中,并获取该控件实现的类的实例(称之为“Widget”)。

现在我需要将接口(interface)指针 IWidget 从 C# 传递到遗留 C++ 代码。我计划将 C++ 代码放在一个 dll 中,并使用 P/Invoke 从 C# 调用它。问题是我不知道如何为 C++ 代码提供 IWidget 定义。 C++ 代码的原作者有头文件(比如 widget.h),因此他们可以#include widget.h,并声明一个 IWidget 指针。

我没有 .h(也无法获取)。我只有 ActiveX。那么如何在我的 dll 中声明一个 IWidget 指针呢?

到目前为止,我唯一的想法是从 ActiveX dll 创建一个 IDL 文件。这是一个合理的方法吗?

谢谢,标记

最佳答案

您可以尝试使用创建托管程序集的 tlbimp.exe 从 ActiveX 导入元数据,IWidget 应该在那里。如果您使用此托管版本的接口(interface)和 [ClassInterface(ClassInterfaceType.AutoDispatch)] 创建类,它应该传递给 ActiveX。

查看 tlbimp 的 howto activex-wrap

关于c# - 在没有头文件的情况下声明 COM 接口(interface)指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8579087/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com