Windows — использование shell32 внутри переполнения стека

Я пытаюсь использовать некоторый код, который использует 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

0

Решение

Мне пришлось скачать Windows SDK и добавить его к моим параметрам, как это:

LIBS += -L"C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib" -loleaut32 -lshell32 -luuid -lole32
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]