C++ DLL中的OpenBLAS挂起在FreeLibrary中
我不知道如果在DLL中使用OpenBLAS,是否有办法释放它,但是当我加载使用OpenBLAS的DLL,然后尝试释放它时,FreeLibrary函数挂起死锁?永远不会回来 我使用从下载的预构建包 使用Visual Studio 2010编译测试程序 有什么想法吗 以下是重现问题的代码: 使用OpenBLAS的虚拟DLL不执行任何操作: 调用DLL的程序:C++ DLL中的OpenBLAS挂起在FreeLibrary中,c++,dll,lapack,blas,C++,Dll,Lapack,Blas,我不知道如果在DLL中使用OpenBLAS,是否有办法释放它,但是当我加载使用OpenBLAS的DLL,然后尝试释放它时,FreeLibrary函数挂起死锁?永远不会回来 我使用从下载的预构建包 使用Visual Studio 2010编译测试程序 有什么想法吗 以下是重现问题的代码: 使用OpenBLAS的虚拟DLL不执行任何操作: 调用DLL的程序: hInstance不为NULL?尝试调用FunctionNeverCalled。OpenBlas可能尝试完成从未完成的初始化。OpenBlas
hInstance不为NULL?尝试调用FunctionNeverCalled。OpenBlas可能尝试完成从未完成的初始化。OpenBlas是否使用openmp?如果是的话,您的测试程序是为它构建的吗?hInstance不是空的,OpenBLAS不是为openmp构建的。我还尝试从DLL内部和测试程序调用FunctionNeverCalled函数,但仍然挂起FreeLibrary。无论如何,谢谢你的想法
#include "stdafx.h"
#include <cblas.h>
BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
return TRUE;
}
void FunctionNeverCalled()
{
float f = 1;
cblas_sasum(1, &f, 1);
}
#include "stdafx.h"
#include <Windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
HINSTANCE hInstance = ::LoadLibraryExW(L"..\\Debug\\DllUsingOpenBlas.dll", NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
::FreeLibrary(hInstance); // Hangs on FreeLibrary
return 0;
}