DLL卸载顺序问题
有个COM DLL工程(DLL A),其中用到了一个全局的变量,变量类型是指向另一个COM DLL(DLL B)中的对象的智能指针CComPtr<IXxx>,现在发现在应用程序关闭时会弹出内存不能读的出错信息,经调试发现DLL A中的全局的智能指针在析构时调用内部接口指针的Release()方法时出错,原因是此时DLL B已经先被卸载了,内存中早已没有了Release()函数当然会出错。
令我奇怪的是,DLL A中还持有一个DLL B中对象的实例,这时此对象内部的引用计数应该是大于0的,为什么DLL B还是会先于DLL A被卸载呢?这样的问题该怎么解决?
另外我试了在DLL中使用一个全局的ADO Connection对象,在程序退出的时候也是有相同的问题,似乎ADO的DLL也是先被卸载,导致Connection对象在Release()的时候出错...