问题标签 [activeqt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
167 浏览

c++ - 无法从 C++ 中找到 COM 对象,尽管 Guid 它已注册

首先祝大家新年快乐,希望你们一切都好!

我正在开发一个 C++ 项目,在该项目中我需要调用我在这篇文章的第一个答案之后创建的 C# DLL 。获得 DLL 后,我需要从 Qt 调用它,因此通过使用dumpcpp和 regasm 生成的.tlb文件,我设法让.cpp.h文件使用我的类。作为参考,类的命名空间是Wrapper,主类是Device和 guid {DD4A4896-C105-4C60-839B-B18C99C8FE15}

一旦我有生成的文件来使用DLL,如果我尝试在 Qt 上创建Wrapper:: Device实例,我会收到以下错误:

它没有提供更多信息,所以我尝试检查 guid 是否存储在系统注册表中(我使用了之前引用的帖子中解释的 regasm 命令,它说它成功了,但你永远不知道)。打开注册表编辑器并搜索 Guid 显示它存在于:Computer\HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{DD4A4896-C105-4C60-839B-B18C99C8FE15},据我所知,这是这些 guid 的正确路径,它指向正确的 DLL。

我虽然这可能是由于某种 ActiveQt 问题,并且正如之前引用的帖子解释了如何从 VS C++ 使用该 DLL,我决定试一试,将此用作另一个参考。我已经完成了这段代码,它应该创建我的设备对象的一个​​实例

但是,这也不起作用, createInstance 方法会引发Class not registeredHR=80040154的异常。同样,根据注册表编辑器,该类已注册,所以我不明白错误。我也尝试过使用devPtr.CreateInstance("Wrapper.Device"),devPtr.CreateInstance("Wrapper::Device")或 `devPtr.CreateInstance("Wrapper::CLSID_Device") 作为我发布的链接的建议,但在这些情况下,我得到另一个例外,即 HR=800401f3和消息Invalid class string

VS 或 Qt Creator 是否以管理员身份打开并不重要,我得到完全相同的错误。我的想法已经用完了,我真的需要能够使用由 dumpcpp 生成的文件从 Qt 中使用该 DLL。

有谁知道会发生什么?我觉得很奇怪。

0 投票
0 回答
41 浏览

c++ - 缺少 COM 对象 GUID

我想使用 COM 连接到正在运行的对象。我有这个代码。

但是编译器抱怨没有 GUID 与 ETABS:cOAPI 相关联。如何解决这个问题?

确切的错误消息是:无法在没有 guid 的对象上调用运算符 __uuidof。