DLL中的OpenBLAS在FreeLibrary中挂起

时间:2013-10-15 07:28:45

标签: c++ dll lapack blas

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

我使用从http://sourceforge.net/projects/openblas/files/v0.2.8/下载的预构建包 使用Visual Studio 2010编译测试程序。

有什么想法吗?

以下是重现此问题的代码:

使用OpenBLAS的虚拟DLL,什么都不做:

#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);
}

程序调用DLL:

#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;
}

0 个答案:

没有答案