0

我正在尝试使用一些使用IID_IShellDispatchandCLSID_Shell常量的代码。

我的包括:

#include <Windows.h>
#include <WinDef.h>
#include <Shellapi.h>
#include <iostream>
#include <string>
#include <ShlDisp.h>
#include <Shlobj.h>

编码:

    BSTR source = SysAllocString(input.toStdWString().c_str());
    BSTR dest = SysAllocString(outputDirectory.toStdWString().c_str());
    HRESULT result;
    IShellDispatch *pISD;
    Folder *folder = NULL;
    VARIANT vDir, vFile, vOpt;

    CoInitialize(NULL);

    result = CoCreateInstance(CLSID_Shell, NULL, CLSCTX_INPROC_SERVER, IID_IShellDispatch, (void **)&pISD);
    ...

上面的最后一行抛出关于未定义引用 CLSID_Shell 和 IID_IShellDispatch 的错误

该代码是 Qt 项目的一部分,因此我使用的是 Qt 项目文件(用于 qmake),并且已将其添加-lshell32LIBS它的部分:

LIBS += -lshell32 -loleaut32 -lole32

执行的命令是

g++ -Wl,-subsystem,windows -mthreads -o debug\wallch.exe object_script.wallch.Debug  -lglu32 -lopengl32 -lgdi32 -luser32 -lmingw32 -lqtmaind -lshell32 -loleaut32 -lole32 -LC:\Qt\Qt5.2.0\5.2.0\mingw48_32\lib -lQt5Widgetsd -lQt5Networkd -lQt5Guid -lQt5Cored

在win7上使用MinGW

4

1 回答 1

0

我必须下载 Windows SDK 并将其添加到我的选项中,如下所示:

LIBS += -L"C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib" -loleaut32 -lshell32 -luuid -lole32
于 2014-01-14T16:40:53.070 回答