2016-03-28 47 views
0

我能夠在Skype的COM庫(Skype4COM.dll)加載到一個C++ Visual Studio項目,這裏是代碼這樣做:負載COM庫到Qt

#import "C:\Program Files (x86)\Common Files\Skype\Skype4COM.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是很好的。

+0

Qt只是一個C++框架。上面的代碼也可以從Qt項目中運行。你也可以使用[ActiveQt](http://doc.qt.io/qt-5/activeqt-index.html)來使用Qt本身。 –

回答

0

有什麼辦法可以加載並使用一個COM庫到Qt中嗎?

  1. 刪除所有例程COM(un)初始化例如的CoInitialize/CoUnitialize。
  2. 看看Qutlook Example (ActiveQt)
  3. 在YourProject.pro文件中使用TYPELIBS語句或使用dumpcpp工具實現您自己的COM接口導入。

記住,Qt的自己dumpcpp應用程序,提供包裹自己的Qt QAxObject/QAxWidget類COM對象的便利性並不十分可靠,其進口Qt框架版本之間的不同。例如,我將項目從Qt 5.3轉換爲Qt 5.5時,必須重寫相當多的代碼行。我也混合使用Qt和ATL技術。

如果您有更具體的問題,我們可以根據經驗提出答案。