叶
叶不归
Unregistered / Unconfirmed
GUEST, unregistred user!
由于种种原因,我不得不用VC写一个动态链接库c.dll,在c.dll中初始化另外一个com,
然后,用delphi写一个dd.exe来调用这个c.dll
如:
c.dll
---------
int ctest::InitCom() = 0
{ CoInitialize(NULL);
return m_vpMgr.CoCreateInstance(CLSID_VP);
//m_vpMgr是接口,CLSID_VP是类ID
}
在这个c.dll里导出了ctest类,在Delphi中调用c.dll里,也做了ctest的相应声明
procedure TForm1.Button1Click(Sender: TObject);
var
hw: ctest;
begin
hw := Getctest;
hw.ttt; //是ctest的另一个函数,用来测试,没其他用途。
hw.InitCom; //程序运行中这里返回值是S_OK,表明是初始化成功的
end;
调用正常,但主程序dd.exe关闭时报内存错。
如果不调用hw.InitCom,只调hw.ttt,关闭dd.exe则不报错,因此我认为是
InitCom函数里CoCreateInstance搞的鬼。
请问这是为什么??
如果我说的不清楚,请指明…
然后,用delphi写一个dd.exe来调用这个c.dll
如:
c.dll
---------
int ctest::InitCom() = 0
{ CoInitialize(NULL);
return m_vpMgr.CoCreateInstance(CLSID_VP);
//m_vpMgr是接口,CLSID_VP是类ID
}
在这个c.dll里导出了ctest类,在Delphi中调用c.dll里,也做了ctest的相应声明
procedure TForm1.Button1Click(Sender: TObject);
var
hw: ctest;
begin
hw := Getctest;
hw.ttt; //是ctest的另一个函数,用来测试,没其他用途。
hw.InitCom; //程序运行中这里返回值是S_OK,表明是初始化成功的
end;
调用正常,但主程序dd.exe关闭时报内存错。
如果不调用hw.InitCom,只调hw.ttt,关闭dd.exe则不报错,因此我认为是
InitCom函数里CoCreateInstance搞的鬼。
请问这是为什么??
如果我说的不清楚,请指明…