gpt4 book ai didi

c++ - 使用 C++ 在 QT 中加载 COM DLL(无 header )?

转载 作者:太空宇宙 更新时间:2023-11-04 12:12:54 31 4
gpt4 key购买 nike

我刚开始使用 QT。现在我需要将我在 Visual C++ 项目中的一些代码转移到 QT。

项目目前唯一要做的就是打开photoshop,把visible flag设置为false(会用到自动化,所以后面会加很多东西)。

我所做的是导入 2 个 photoshop dll(注意:我没有它们的 .h 或 .lib,只有 .dll 文件)我用来导入这些 dll 的方法是通过导入 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;
}

现在,我使用带有 MinGW 的 QT Creator 来编译这段代码,它在导入行上给我一些警告和错误:

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 文件。

关于c++ - 使用 C++ 在 QT 中加载 COM DLL(无 header )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9077347/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com