[英]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.