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