如何在mfc中为动态dll加载多个实例

时间:2011-10-24 09:37:24

标签: dll mfc

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

1 个答案:

答案 0 :(得分:0)

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