Я пытаюсь использовать некоторый код, который использует IID_IShellDispatch
а также CLSID_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
Использование MinGW на win7
Мне пришлось скачать Windows SDK и добавить его к моим параметрам, как это:
LIBS += -L"C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib" -loleaut32 -lshell32 -luuid -lole32
Других решений пока нет …