繁体   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