如何在vc ++中的多个进程中加载​​单个DLL

时间:2015-09-23 09:54:55

标签: c++ dll

我已经在c ++中创建了一个dll,它在所有活动进程中加载​​。我想知道这个dll只有一次加载,并且所有进程都会共享该单个副本。

CPhoneticProcessor * g_pPhoneticProcessor = NULL;
BOOL APIENTRY DllMain( HMODULE hModule,
                  DWORD  ul_reason_for_call,
                  LPVOID lpReserved
                  )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        g_pProcessor = new CPProcessor();
        break;
    case DLL_THREAD_ATTACH:
        break;
    case DLL_THREAD_DETACH:
        break;
    case DLL_PROCESS_DETACH:
        if(g_pProcessor)
            delete g_pProcessor;
        g_pProcessor = NULL;
        break;
    }

    return TRUE;
}

每个进程加载dll时,它会创建类CPProcessor的新实例,因此我只希望在所有进程之间共享一个实例。 任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您可以使用data_seg feaure.Plese检查以下链接。

https://msdn.microsoft.com/en-us/library/h90dkhs0(VS.80).aspx