将COM库加载到Qt中



我可以将Skype COM库(Skype4COM.dll)加载到C++visual studio项目中,下面是执行此操作的代码:

#import "C:Program Files (x86)Common FilesSkypeSkype4COM.dll" 
using namespace SKYPE4COMLib;
int main(int argc, char* argv[]) 
{
    CoInitialize(NULL);
    ISkypePtr pSkype(__uuidof(Skype));
    pSkype->Attach(6, VARIANT_TRUE);
    IChatMessage *message;
    message = pSkype->SendMessage(_bstr_t(L"user_name"), _bstr_t(L"Hello"));
    printf("%s sent message", (char *)message->FromHandle);
    pSkype = NULL;
    CoUninitialize();
    return 0;
}

有什么方法可以将COM库加载到Qt中吗?因为使用Skype的库在C++中制作GUI会很好。

有什么方法可以加载并将COM库使用到Qt中吗?

  1. 删除所有例行COM(un)初始化,例如CoInitialize/CoUnitialize
  2. 看看Qutlook示例(ActiveQt)
  3. 使用YourProject.pro文件中的TYPELIBS语句或dumpcpp工具实现您自己的COM接口导入

请注意,Qt自己的dumpcpp实用程序提供了COM对象封装到自己的Qt QAxObject/QAxWidget类的便利性,它不是很可靠,并且它的导入在Qt框架版本之间有所不同。例如,在将项目从Qt 5.3转换为Qt 5.5时,我不得不重写相当多的代码行。我还混合了Qt和ATL技术。

如果你有更具体的问题,我们可能会根据经验给出答案。

最新更新