c++ - 在同一进程中加载​​多个 dll 拷贝

标签 c++ windows dll process multithreading

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

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

据我所知,DLL 是每个进程的,但是是否可以多次加载 DLL?也许每个线程?在 C# 中?还是在 C++/CLI 中?

我正在尝试加载 native C++ dll。

最佳答案

不幸的是,NT核心DLL loader routines不要公开公共(public)接口(interface)以跳过已加载的 DLL 池。因此,您只有几个选择:

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

关于c++ - 在同一进程中加载​​多个 dll 拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1587176/

相关文章:

c++ - 如何在运行时链接期间从我的 DLL 调用函数?

c++ - 对象池设计模式问题

c++ - SFINAE 和可变参数模板类

linux - 如何在 Linux 上的 VirtualBox 上在 Windows 上运行 Docker?

.net - 在桌面下打开和关闭 Windows 8 触摸键盘 tabtip

c++ - ID3D11DeviceContext::Map 性能低下

c++ - 信号槽的语法糖

c++ - Qt C++ : Save project in file

c# - IIS 64 位 Com dll

c++ - 使用 Jenkins 将 C++ 库部署到 Artifactory