一般来说,我对C++相对陌生,对Windows开发也非常陌生。
我正在编写一个使用DXGI库的程序,它编译得很好,但当我运行可执行文件时,CreateDXGIFactory1的HRESULT显示为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 successn");
} else {
printf("ERROR: 0x%Xn", hCreateFactory);
}
您正在传递一个随机的、新创建的GUID。这毫无意义。您应该传递想要获得的接口的IID,即__uuidof(IDXGIFactory1)
。文档中的示例说明了这一点。