在同一进程中加载​​dll的多个副本

时间:2009-10-19 06:05:26

标签: c++ windows dll process multithreading

我有一个由第三方制作的dll,它具有某种内部数据结构,将其大小限制为X元素。

所以基本上,它有一个以X为限制的队列。

现在从我所知道的DLL是每个进程,但是可以多次加载DLL吗?也许每个线程?在C#?或者在C ++ / CLI中?

我正在尝试加载本机c ++ dll。

2 个答案:

答案 0 :(得分:7)

不幸的是,NT核心DLL loader routines没有公开公共接口来跳过已经加载的DLL池。因此,您只剩下几个选择:

  • 复制,硬链接,符号链接和/或使用重新分析点来欺骗加载程序,使其认为您有多个不同的DLL。
  • 使用多个进程,并为每个进程加载一个DLL。
  • 编写一个新的DLL加载程序(非常不适合胆小的人!)
  • 说服DLL的供应商修复它(可能比编写DLL加载器更难:)

答案 1 :(得分:5)

你能做到的唯一方法是拥有相同dll的多个副本,然后动态加载它们。