动态链接库的调用问题(50分)

  • 主题发起人 主题发起人 wuyuede
  • 开始时间 开始时间
W

wuyuede

Unregistered / Unconfirmed
GUEST, unregistred user!
我在动态链接库里写了一个 接口,要两个程序来调用,要求,只能生成一个对象,可是不知道为什么,每个程序在调用的时候都会创建一个对象。大概的代码如下:
IDemoIntef 是个接口,其中有所要用到的 函数
TDemoIntf = Class(TInterfacedObject, IDemoIntef);
//TDemoIntf 继承了接口的类
动态链接库中暴露的函数:GetHelloInit;
全局变量 : _IDemoIntef: IDemoIntef;
function GetHelloInit: IDemoIntef;
stdcall;
begin
try
if not Assigned(_IDemoIntef) then
begin
_IDemoIntef := Tdemointf.Create;
end;
finally
Result := _IDemoIntef;
end;
end;
在其他程序中调用这个函数来创建一个 对象用接口中的函数,但是 这些函数同一时刻只能有一个程序来调用,所以在创建时先 assigned 判断是否创建了对象。
现在的问题是,两个程序同时运行时,用assigned判断后 都是一个空,所以都会创建一个新的对象,不知道这是为什么
 
无语了,要是你第二个程序判断的时候不是空,那才见鬼了呢
两个程序虽然用的是一个dll,但是那完全是在两个地址空间啊。
 
to
放飞:
那么怎么才能在dll中实现 内存共享,让两个进程共同访问一个地址空间呢?
 
呵呵
能不能通过注册表或者内存映射,公共内存来判断呢?
真是奇怪的用法
 
两个程序共用一个DLL,其地址空间相互是没有联系的,变量只在各进程空间管用,两程序间不能互相传递,用内存映射吧
 
多人接受答案了。
 
后退
顶部