我目前正在尝试使用随Qt安装提供的示例项目Com App (Qt_folder\Examples\4.7\activeqt\comapp)。
我在Windows上使用4.7.4版本,Qt Creator 2.3.0和MinGw编译器。
因此,示例项目可以很好地编译和运行,但是COM服务器信息似乎没有注册到注册表中,因为我无法从任何脚本访问它,而且我在注册表中也找不到UID,这意味着COM服务器没有注册。
我试图从3天前开始寻找解决方案,但我开始绝望了。欢迎任何帮助。
附注:对不起,我的英语不是我的母语
发布于 2012-07-03 07:52:32
不确定Qt是否在幕后处理此问题,但您是否确定正在通过调用CoInitializeEx为COM初始化线程
我在工作中使用了一些COM和Qt,这有时会被忽略。
CoInitializeEx Function
下面是使用该函数的一个示例。
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-11 19:23:26
似乎让COM接口正常工作的唯一方法是使用Qt VS插件从VS编译。它对我很有效,我用的是Visual Studio 2008。请看这篇文章:Building ActiveQt (COM) applications with MinGW
但不管怎样,这并不能解决这个问题,因为需要有Microsoft VS许可证才能使用COM接口编译Qt软件。(VS加载项与VS express版本不兼容)
感谢大家的帮助。
https://stackoverflow.com/questions/8517371
复制相似问题