C++ 使用mingw 4.9.2 windows xp实现Boost dll unload()死锁

C++ 使用mingw 4.9.2 windows xp实现Boost dll unload()死锁,c++,windows,boost,dll,C++,Windows,Boost,Dll,我想加载一个dll实例,解析它的导出符号,并在包装类中使用它。我是这样做的: WrapperImpl::WrapperImpl( const std::string& libName ) { boost::filesystem::path libPath( boost::filesystem::current_path()); libPath /= libName; m_lib.load(libPath); m_lib.unload(); } 其中boost::

我想加载一个dll实例,解析它的导出符号,并在包装类中使用它。我是这样做的:

WrapperImpl::WrapperImpl( const std::string& libName )
{
   boost::filesystem::path libPath( boost::filesystem::current_path());
   libPath /= libName;
   m_lib.load(libPath);
   m_lib.unload();
}
其中
boost::dll::shared_library m_lib

我在unload()调用时遇到死锁,没有抛出异常。我看到dll已成功加载,所有符号都已解析,我可以调用它们并获得合理的返回代码。但是卸货有什么问题吗


我有一个单线程应用程序(实际上它是一个boost测试单元),boost1.61,mingw4.9.2。有人能给我一个提示吗?

如果您遇到死锁,在调试器下运行并查看死锁的确切位置通常会很有帮助-您能提供堆栈跟踪吗?不幸的是,我手头没有调试增强库:(.Only release One您仍然可以获得一些回溯,这可能会有所帮助。好吧,我从未在Windows/Eclipse下尝试过,但以下是我的第一个见解:0x7c90e514的ntdll!KiFastSystemCallRet()ntdll!0x7c90df4a的ZwWaitForMultipleObjects()KERNEL32!0x7c809590的CreateFileMappingA()WmiFreeBuffer()在0x77de8631 KERNEL32!GetModuleFileNameA()在0x7c80b729,这是您所期望的吗?如果出现死锁,在调试器下运行并查看死锁的确切位置通常会很有帮助-您可以提供堆栈跟踪吗?不幸的是,我手头没有调试增强库:(.Only release One您仍然可以获得一些回溯,这可能会有所帮助。好吧,我从未在Windows/Eclipse下尝试过,但以下是我的第一个见解:0x7c90e514的ntdll!KiFastSystemCallRet()ntdll!0x7c90df4a的ZwWaitForMultipleObjects()KERNEL32!0x7c809590的CreateFileMappingA()WmiFreeBuffer()在0x77de8631内核32!在0x7c80b729的GetModuleFileNameA()中,这是您所期望的吗?