1.在dll中必须调用CoInitialize或者CoInitializeEx否则会报错“没有调用CoInitialize()”,但是这个函数不能在dll中调用否则会报错“无法在设置线程模式后对其加以更改”,所以只要在exe中先调用CoInitialize,然后调用dll。
2.如果使用“CoInitializeEx(NULL, COINIT_MULTITHREADED); ”会出现此错误,可以这样
HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
#ifdef _DEBUG
//assert(SUCCEEDED(hr));
#endif
if( FAILED(hr) )
{
hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
#ifdef _DEBUG
assert(SUCCEEDED(hr));
#endif
if( FAILED(hr) )
{
return hr;
}
}