DLL中声明并初始化了COM接口指针,怎么析构掉

DLL中声明并初始化了COM接口指针,如何析构掉?
一个VC6 exe程序,调用VC6的DLL,而该DLL又调用了一个COM

VC6 exe程序 -- vc6exe.cpp

#define MYDECL __stdcall//__cdecl
typedef BOOL (MYDECL *InitPlotter_type)();
InitPlotter_type InitPlotter_ptr = NULL;

HMODULE hDll = 0;

void CSimWplotterDlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here

hDll = LoadLibrary("vc6dll.dll");

 
  InitPlotter_ptr = (InitPlotter_type ) GetProcAddress( hDll, "InitPlotter");
   
  InitPlotter_ptr();

}

VC6 DLL ---vc6dll.cpp

#import "PlotterCom.tlb"

PlotterCom::IPlotterInterfacePtr p_PlotterCom = NULL;


BOOL __stdcall InitPlotter(void)
{
if (p_PlotterCom == NULL)
{
PlotterCom::IPlotterInterfacePtr p(__uuidof(PlotterCom::XLpPlotter ));
p_PlotterCom = p;
}
bool inited = p_PlotterCom->VB_InitPlotter();
//p_PlotterCom=NULL;
return inited;
}

BOOL __stdcall PausePlot(void)
{
return p_PlotterCom->VB_PausePlot();

}


上面的//p_PlotterCom=NULL;
//注释掉此句,在关闭退出时,会报错
//加上此句退出时虽然不会报错。但是这个全局指针我还需要使用,在调用COM中的其它函数时使用(比如PausePlot()),因为一些参数是在InitPlotter()函数内初始化的,且InitPlotter()函数会弹出一个窗口,继续手动初始化参数。所以该指针不能重新初始化,必须是全局指针。

我希望能在使用完该DLL,需要退出程序时,再使用p_PlotterCom=NULL;。避免程序退出时出错。
请问,在DLL中何处添加该句代码,才能达到我的目的?



------解决方案--------------------
在程序退出时调p_PlotterCom->Release()
------解决方案--------------------
在DLL_PROCESS_ATTACH:中调用CoInitialize(NULL);

或者你增加一个函数来进行释放调用。

还有就是,得看看IPlotterInterfacePtr的实现了