佚名通过本文主要向大家介绍了c#调用c dll实例,c#调用dll实例,java调用dll实例,labview调用dll实例,vba封装dll实例等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 如何保证一个dll在内存中只有一个实例?
描述:
解决方案1:
描述:
我做了一个DLL,我希望这个DLL文件在有多个程序需要调用的时候,只有一个程序可以成功调用这个dll文件,其他的都无法调用。换种方法说,我希望这个DLL文件在内存中只有一份拷贝
请问如何实现呢?
之前别人的答复:
BOOL WINAPI DllMain(
HANDLE hinstDLL,
DWORD dwReason,
LPVOID lpvReserved
);
dwReason值是DLL_PROCESS_ATTACH时做判断是第二次调用就返回FALSE;
能不能具体点怎么做判断?怎么做判断是第二次调用?
解决方案1:
通常的做法
m_hMutex = OpenMutex (MUTEX_ALL_ACCESS, FALSE, strClassName) ;
if (m_hMutex == NULL)
{
// m_hMutex不存在,表示没有其它实例在运行,创建一个m_hMutex
IsFirst = TRUE;
m_hMutex = CreateMutex (NULL, TRUE, strClassName) ;
}
else
{
IsFirst = FALSE;
}