<分区>
我试图通过使用 std::lock 对象来防止对 DLL 初始化函数的多次调用。
在独立程序上使用这样的程序时:
#include <mutex>
std::mutex mtx;
void main(){
mtx.lock();
(...)
mtx.unlock()
}
在 DLL 上调用时,这段完全相同的代码无法通过 mtx.lock()。
BOOL APIENTRY DllMain(HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved)
{
f_Init(VERSION_ID);
return TRUE;
}
//On another cpp file, a static library actually.
#include <mutex>
std::mutex mutex_state;
void f_Init(DWORD version){
//Acquire the state lock
mutex_state.lock(); //<-- Will NOT get past this line
(...)
mutex_state.unlock();
}
为什么在这种情况下无法锁定互斥体?
我目前使用的是 Microsoft Visual Studio 2013。