用一个线程回调用avcodec_find_decoder返回非零,但是不能用

用一个线程来调用avcodec_find_decoder返回非零,但是不能用
avcodec_register_all();
    m_codecCtx = NULL;
    if (codecType == CODEC_ID_NONE)
    {
        return;
    }
   
    AVCodec *codec = NULL;
    codec = avcodec_find_decoder(codecType);
    if (codec == NULL)
    {
        av_free(m_codecCtx);
        m_codecCtx = NULL;
        return;
    }

返回的codec中的long_name为NULL,接下来的所有操作都无效
------解决思路----------------------
1.看看错误代码是什么 
2.确认解码能否在线程中执行?需要注意什么?
------解决思路----------------------
引用:
@孤客天涯    我用的是动态库(lib+dll)   错误提示是访问内存冲突, 你说的能否在线程中执行是什么意思,我做了个测试程序都能正确使用,但是测试程序不是启用线程来执行,是不是跟gpl有关系??


是否需要初始化com环境?能否跨线程调用?
------解决思路----------------------
一定要在线程中执行么