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

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

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

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

我试图加载一个本地的C ++ DLL。

不幸的是,NT核心DLL加载程序例程不公开接口跳过已加载的DLL池。 因此,您只剩下几个选择:

  • 复制,硬链接,符号链接,和/或使用重分析来愚弄加载器认为你有多个不同的DLL。
  • 使用多个进程,并为每个进程加载一个DLL。
  • 写一个新的DLL加载程序(非常不适合心脏!)
  • 说服DLL的供应商来解决它(可能比编写DLL加载器更难:)

唯一的办法就是通过拥有多个相同的dll副本,然后动态加载它们。