在尝试创建IWIC Factory时,CoCreateInstance函数返回E_INVALIDARG(一个或多个参数无效)。我检查了MSDN,但我看不出哪些参数可能无效。
IWICImagingFactory* iwicfactory = nullptr;
HRESULT IWFactHRes = CoCreateInstance(CLSID_WICImagingFactory,
NULL,
CLSCTX_INPROC_SERVER,
IID_IWICImagingFactory,
(LPVOID*)iwicfactory
);
我错过了什么吗?
答案 0 :(得分:0)
CoCreateInstance的最后一个参数是
接收 riid 中请求的接口指针的指针变量的地址。
您的代码当前传递的是指针变量,而不是它的地址。你必须改变
(LPVOID*)iwicfactory
到
(LPVOID*)&iwicfactory
<小时/> 附加说明:
最好使用IID_PPV_ARGS宏,以确保IID和界面指针同步,同时不再需要强制转换:
HRESULT IWFactHRes = CoCreateInstance(CLSID_WICImagingFactory,
NULL,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&iwicfactory)
);
在调用CoCreateInstance
之前,需要在调用线程上初始化COM。致电CoInitialize或CoInitializeEx即可。