我正在尝试使用一些使用IID_IShellDispatch
andCLSID_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),并且已将其添加-lshell32
到LIBS
它的部分:
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