1

我目前正在尝试使用 Qt 安装提供的示例项目 Com App (Qt_folder\Examples\4.7\activeqt\comapp)

我在 Windows、Qt Creator 2.3.0 和 MinGw 编译器上使用 4.7.4 版。

所以示例项目编译并运行良好,但似乎 COM 服务器信息未注册到注册表中,因为我无法从任何脚本访问它,而且我也无法在注册表中找到 UID,这意味着 COM 服务器未注册。

我试图从 3 天前找到解决方案,但我开始感到绝望。欢迎任何帮助。

ps对不起我的英语不是我的母语

4

2 回答 2

0

不确定 Qt 是否会在后台处理此问题,但您确定您的线程正在通过调用为 COM 初始化CoInitializeEx吗?

我一直在工作中使用一些 COM 和 Qt,这有时会被忽略。

CoInitializeEx 函数

这是使用该功能的示例。

MyClass::MyClass()
{
    // Make this call before attempting to access COM.
    if( SUCCEEDED( CoInitializeEx( 0, COINIT_APARTMENTTHREADED ) ) )
    {
         // This single thread has been initialized for COM usage.
         // Alternatively you can use COINIT_MULTITHREADED instead
         // of COINIT_APARTMENTTHREADED if you require threaded
         // support.
    }
    else
    {
         // Failed, still must call uninitialize.
         CoUninitialize();
    }
}

MyClass::~MyClass()
{
    CoUninitialize();
}
于 2012-07-02T23:52:32.247 回答
0

似乎使 COM 接口正常工作的唯一方法是使用 Qt VS 插件从 VS 编译。它对我有用,我使用了 Visual Studio 2008。请参阅这篇文章:使用 MinGW 构建 ActiveQt (COM) 应用程序

但无论如何,这并不能解决问题,因为必须拥有 Microsoft VS 许可证才能使用 COM 接口编译 Qt 软件。(VS 插件与 VS express 版本不兼容)

感谢大家的帮助。

于 2012-07-11T11:23:25.633 回答