Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ DLL中的OpenBLAS挂起在FreeLibrary中_C++_Dll_Lapack_Blas - Fatal编程技术网

C++ DLL中的OpenBLAS挂起在FreeLibrary中

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

我不知道如果在DLL中使用OpenBLAS,是否有办法释放它,但是当我加载使用OpenBLAS的DLL,然后尝试释放它时,FreeLibrary函数挂起死锁?永远不会回来

我使用从下载的预构建包 使用Visual Studio 2010编译测试程序

有什么想法吗

以下是重现问题的代码:

使用OpenBLAS的虚拟DLL不执行任何操作: 调用DLL的程序:
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;
}