Delphi 是否仍然可以打开一个dll的多个实例?

Delphi 是否仍然可以打开一个dll的多个实例?,delphi,Delphi,我有一个dll文件,但我想有多个实例的dll在同一时间与不同的参数,每次我做LoadLibrary,它返回相同的句柄,一切都是一样的。 你能给我建议一个处理这个问题的方法吗。 仅供参考,我不想复制dll文件。 谢谢不,您想做的是不可能的。如果尝试加载已加载的DLL,系统将返回已加载模块的句柄,并增加其引用计数 您的问题确实指向了唯一可用的解决方法。将文件复制到唯一的文件名,然后加载该文件 你能给一个dll参数的例子吗?我这样问是因为你不能把命令行参数传递给dll。@SertacAkyuz我怀疑d

我有一个dll文件,但我想有多个实例的dll在同一时间与不同的参数,每次我做LoadLibrary,它返回相同的句柄,一切都是一样的。 你能给我建议一个处理这个问题的方法吗。 仅供参考,我不想复制dll文件。
谢谢

不,您想做的是不可能的。如果尝试加载已加载的DLL,系统将返回已加载模块的句柄,并增加其引用计数


您的问题确实指向了唯一可用的解决方法。将文件复制到唯一的文件名,然后加载该文件

你能给一个dll参数的例子吗?我这样问是因为你不能把命令行参数传递给dll。@SertacAkyuz我怀疑dll导出了一个函数/类,应用程序可以用它在dll中存储值。因此,加载多个副本以尝试存储多个值。
LoadLibrary()
受到限制。它仅在当前活动上下文中搜索现有DLL。如果在一个上下文中加载DLL,然后切换到另一个上下文并再次尝试加载,会发生什么情况?我还没试过。它是否只适用于标记为隔离感知的dll?我认为唯一的方法是复制文件并从新文件加载dll。是否可以在内存中加载dll副本,然后从内存中加载不同的实例库/模块?可能是这样的,尽管操作系统当然不支持在没有备份文件的情况下在内存中加载dll。