“无法在设置线程模式后对其加以更改”

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;
        }
    }

 

你可能感兴趣的:(c++/VC)