2011-12-15 46 views
1

目前,我嘗試使用示例項目的COM應用,該應用與Qt的安裝給未註冊(Qt_folder \例子\ 4.7 \ ActiveQt可\ comapp)ActiveQt可的COM應用程序的例子 - COM服務器在Windows註冊表(Qt4.7.4)

我使用的是Windows版本4.7.4,Qt Creator的2.3.0和MinGW編譯器。

因此,示例項目編譯並運行良好,但似乎COM服務器信息沒有註冊到註冊表中,因爲我無法從任何腳本訪問它,而且我也無法在註冊表中找到UID,意思是該COM服務器未註冊。

我試圖找到3天前一個解決方案,我開始絕望。 歡迎任何幫助。

p.s.對不起,我的母語不是

+0

您是如何設法讓Qt + MinGW COM準備就緒的(您聲稱自己可以成功編譯comapp項目)? – menjaraz 2012-02-21 17:20:21

+0

我剛剛打開了Qt示例文件夾中的comapp示例,然後從Qt創建者編譯它。我什麼都沒做。 – Gojir4 2012-07-03 11:52:05

回答

0

不知道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(); 
} 
0

看來使COM接口正常工作的唯一方法是使用Qt VS加載項從VS編譯。這對我的作品,我使用的Visual Studio 2008 看到這個職位:Building ActiveQt (COM) applications with MinGW

但無論如何,這並沒有解決問題,因爲它是需要有一個微軟VS許可證才能使用COM接口編寫的Qt軟件。 (VS插件是不是VS速成版不兼容)

感謝所有您的幫助。