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;
}
}
COM初始化DLL调用详解
本文探讨了在DLL中调用COM初始化函数CoInitialize或CoInitializeEx时可能遇到的问题及解决办法。文章详细介绍了如何避免“没有调用CoInitialize()”和“无法在设置线程模式后对其加以更改”的错误,并提供了具体的代码示例。
1260

被折叠的 条评论
为什么被折叠?



