关于调用dll时COM初始化的有关问题

关于调用dll时COM初始化的问题
我做了个excel的MFC扩展dll,另外编了一个主程序来调用它,我就想问,我有的人在dll中利用CoInitialize来初始化COM,那么能不能不在dll中初始化,而在主程序中去初始化。

我是这么做的,在主程序中的C***App类中的InitInstance中去初始化,这样对不对?是不是一定要在dll中初始化啊?

------解决方案--------------------
最好还是调用COM的一方自己去初始化(你这里是DLL),就像内存一样,自己new自己delete,导出的仅是指针
------解决方案--------------------
引用:
Quote: 引用:

最好还是调用COM的一方自己去初始化(你这里是DLL),就像内存一样,自己new自己delete,导出的仅是指针

你的意思是对于调用dll的程序,可以在主程序中用CoInitialize来初始化COM吗?
可以
------解决方案--------------------
CoInitialize初始化需要在每个使用com的线程中初始化,最好在dll中。
------解决方案--------------------
只要保证在线程中,调COM之前CoInitialize初始化就好,放在哪里都是可以的,但还是建议你放在你的dll中。
不要怕重复调用影响效率,仅仅是增加引用计数而已。
MSDN上提示:不要在DLLMAIN函数中调用CoInitialize和CoUninitialize。