Wind is Wild

日常体会,以及笔记

 

COM接口调用,CreateDispatch失败的问题

有一个自动化处理Office文档的程序,原本运行的很好,基于效率和UI效果的问题,改成了多线程处理,编译没问题,一运行就报错找不到Office软件。

程序中产生错误的地方就是创建COM对象失败,以前好好的为什么失败呢,检查了老半天,才发现是缺少初始化COM环境的调用,即CoInitialize(NULL);

尽管主程序中已经调用CoInitialize(NULL); 但COM应用环境并未传递到线程中去,导致线程中创建COM对象失败了。

因此,需要在线程入口处调用CoInitialize(NULL);,退出线程前再调用CoUninitialize();。

posted on 2018-02-10 12:01  ifdef  阅读(925)  评论(0)    收藏  举报

导航