【问题标题】:How to Load Multiple Instance for the dynamic dll in mfc如何在 mfc 中为动态 dll 加载多个实例
【发布时间】:2011-10-24 09:37:24
【问题描述】:

我想知道有没有办法显式加载 DLL 的多个实例(即使用 LoadLibrary 调用)。通常,当调用 LoadLibrary 时,进程仅加载一次 DLL(以便库的单个副本驻留在进程的内存中),并且为同一库完成的所有后续 LoadLibrary 调用将返回库的相同句柄,由第一次调用返回。更具体地说,我希望能够为进程内创建的每个线程加载一个单独的 DLL 实例。目前,如果我在每个线程中执行 LoadLibrary,我只会获得指向驻留在进程地址空间中的库的单个实例的相同指针,并且实际上所有线程都引用库中的相同函数(这里发生了很大的混乱在我的应用程序中)。相反,我希望每个线程在单独的内存空间中创建一个单独的库实例,以便线程在调用库中的函数时不会相互干扰。

【问题讨论】:

    标签: dll mfc


    【解决方案1】:

    我认为这是不可能的(直到您创建一个新进程并在该进程中加载​​ DLL)。 DLL 在进程级别加载(因此在进程控制块中有条目)。虽然您的 DLL 可以检测是否在宿主应用程序中创建了新线程,以便它可以在 DLLMain 方法中初始化 TLS 特定数据。

    【讨论】:

    • Ankur : 你能举一些例子来解释一下吗?
    • 您可以参考 DllMain 文档msdn.microsoft.com/en-us/library/windows/desktop/…。特别是备注部分
    • Ankur:我的目标是为同一个 dll 创建多个实例。
    • 这不可能。顺便问一下,你为什么要这样做?
    • Ankur:我的应用程序需要这个。我的 dll 中有一个全局变量。对于特定场景,我的两个 dll 名称相同。那时我必须将这些变量分开。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    相关资源
    最近更新 更多