我有一个我认为在 COM 中相当简单的接口。我想在activeqt中实现它。我能够让 ATL 原型工作,但我宁愿使用 qt 小部件和信号而不是 COM 控件。
我可以在python的comtypes中加载ATL COM dll并运行help(ATLDll)
,接口的相关扩展是
Methods inherited from comtypes.gen.<guid>.ITest:
Init(...)
method Init
我不确定如何在 activeqt 中获得相同的东西。ATL 正在使用此代码来定义接口(我认为,这是在自动生成的 _i.h 文件中):
MIDL_INTERFACE(<guid>)
ITest : public IDispatch
{
public:
virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Init(
/* [in] */ IDispatch *obj) = 0;
};
然后类定义继承自
public IDispatchImpl<ITest>
我试过混合activeqt和ATL,但到目前为止我还没有成功。我应该改用 dumpcpp 吗?[编辑]如果您想从 Qt 调用现有的 COM 对象,dumpcpp 很有用,但无助于提取接口以在 activeQt 中使用。[/edit] 那是在不混合ATL和activeqt的情况下覆盖接口的方法吗?我想知道 qt 工具和 ATL 是否都试图生成 idl 是我挣扎的根源......
谢谢!