Я относительно новичок в C ++ в целом, и очень новичок в разработке Windows.
Я пишу программу, которая использует библиотеку DXGI — она прекрасно компилируется, но когда я запускаю исполняемый файл, HRESULT из CreateDXGIFactory1 выходит как 0x80004002 или E_NOINTERFACE.
Я скучаю по какой-то библиотеке, или здесь есть более глубокая проблема?
Код, который я использую, следующий:
Выход «Ошибка: 0x80004002».
//Initialize a UUID
GUID uuid;
HRESULT hCreateUUID = CoCreateGuid(&uuid);
//Convert the UUID to string
LPOLESTR stringUUID;
HRESULT hStringToUUID = StringFromCLSID(uuid, &stringUUID);
//Initialize the factory pointer
IDXGIFactory1* pFactory;
//Actually create it
HRESULT hCreateFactory = CreateDXGIFactory1(uuid, (void**)(&pFactory));
if (hCreateFactory == S_OK) {
printf("Factory creation was a success\n");
} else {
printf("ERROR: 0x%X\n", hCreateFactory);
}
Вы передаете случайный, недавно созданный GUID. Это не имеет никакого смысла. Вы должны передать IID интерфейса, который хотите получить, а именно: __uuidof(IDXGIFactory1)
, Пример в документация показывает только это.
Других решений пока нет …