【发布时间】:2010-04-20 13:40:33
【问题描述】:
这是我的问题:我想为同一个 DLL 创建两个单独的实例。
以下不起作用,因为 Handle1 和 Handle2 将获得相同的地址
Handle1 := LoadLibrary('mydll.dll');
Handle2 := LoadLibrary('mydll.dll');
以下工作,但我必须制作 DLL 的副本并将其重命名为其他名称(这似乎有点傻)
Handle1 := LoadLibrary('mydll.dll');
Handle2 := LoadLibrary('mydll2.dll');
有没有办法只拥有一个 DLL 文件,但加载它的多个实例?
【问题讨论】:
-
你为什么要这样做? DLL 是否保存了您想要两个不同副本的某种内部状态?
-
我的猜测是第一次尝试不起作用,因为如果 DLL 已经打开,
LoadLibrary将返回一个现有句柄。 -
我必须和 Mason Wheeler 一起去问:你想用它来实现什么。如果你成功了(就像你的第二个例子),你最终会在内存中得到两倍的相同代码。对我来说,这似乎也有点傻。
-
@Mason 和 Uwe:拥有一个不会让您拥有它提供的服务的多个实例的第 3 方 dll 将是想要 Tom 所要求的一个很好的理由。
-
Mason 和 Uwe:是的,dll 包含来自数据库的某些已处理信息。这两个 dll 连接到不同的数据库并具有不同的信息。我正在尝试在他们之间交换信息
标签: delphi dll loadlibrary