簡體   English   中英

使用C ++在QT中加載COM DLL(無標頭)嗎?

[英]Loading a COM DLL (no headers) in QT with C++?

我剛剛開始使用QT。 現在,我需要將Visual C ++項目中擁有的一些代碼轉移到QT。

該項目目前唯一要做的就是打開photoshop,並將visible標志設置為false(它將用於自動化,因此以后會添加很多東西)。

我要做的是,我導入了2個photoshop dll(注意:我沒有.h或.lib用於它們,只是.dll文件)。我用於導入這些dll的方法是通過import libid,因為所有我嘗試的其他方法無效。 它們是COM對象,順便說一句。

這是我的VC ++代碼:

//library ID of Photoshop.dll
#import "libid:E891EE9A-D0AE-4cb4-8871-F92C0109F18E" 
//library ID of PhotoshopTypeLibrary.dll
#import "libid:4B0AB3E1-80F1-11CF-86B4-444553540000" 

int main()
{
    Photoshop::_ApplicationPtr app( __uuidof(Photoshop::Application));
    app->Visible = false;

    return 0;
}

現在,我將QT Creator與MinGW一起使用來編譯此代碼,它在導入行上給了我一些警告和錯誤:

warning: #import is a deprecated GCC extension
error: libid:E891EE9A-D0AE-4cb4-8871-F92C0109F18E: No such file or directory

然后,在那之后,它(顯然)說未聲明“ Photoshop”。

現在,我進行了搜索,發現最接近的解決方案是包括在VC ++項目中創建的.tlh文件,但是當我這樣做時,我收到了1000多個錯誤和警告,因此顯然不起作用。

有人可以告訴我在這里做什么嗎? 我嚴重卡住了!

#import是Microsoft擴展,可用於在VisualC ++中導入COM庫。

從您的問題看來,您似乎可以訪問VisualC ++,但您的QT代碼是使用gcc編譯的。

如果在VisualC ++中創建一個簡單項目,則可以添加#import代碼並進行編譯。 您會發現編譯器已生成.tlh和.tli文件。 這些文件包含使用COM庫所需的所有信息,並且任何編譯器都可以使用。

然后,您可以將這些文件復制到gcc項目目錄,並對這些生成的文件使用#include(而非#import)。

.tlh等效於c ++頭,.tli更像是.cpp文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM