Я относительно новичок в C++ вообще и очень новый для разработки Windows.E_NOINTERFACE при вызове CreateDXGIFactory1
Я пишу программу, которая использует библиотеку 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);
}
Спасибо, только что заметил, что на самом деле. Откуда возникает функция __uuid, только из любопытства? – javanix
Это не функция, это специальный (нестандартный, специфичный для Microsoft) оператор, несколько похожий на 'sizeof' или' typeid'. Он читает аннотацию, прикрепленную к типу через '__declspec (uuid)', что, в свою очередь, является нестандартным декларатором, специфичным для Microsoft. Если вы посмотрите, как IDXGIFactory1 определяется в заголовках системы, вы увидите на нем '__declspec (uuid)' (обычно скрытый за макросом, поэтому потребуется некоторое копирование). –
А, интересно - спасибо за информацию. – javanix