【发布时间】:2012-02-23 01:01:18
【问题描述】:
我刚开始使用 QT。现在我需要将我在 Visual C++ 项目中的一些代码转移到 QT。
项目目前唯一要做的就是打开photoshop并将可见标志设置为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;
}
现在,我正在使用带有 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 不是标准 C++,你从哪里读到的?
-
我只是想知道如何在 QT 中做到这一点,例如,等效的方式是什么
-
您可以使用 MSVC 编译 Qt 代码(通过使用 Visual Studio 中的 Qt VS 插件,而不是 Qt Creator)。有什么阻止你这样做(因为 COM 是 Windows-only...)?