OpenBLAS в DLL висит в FreeLibrary

Я не знаю, есть ли способ освободить OpenBLAS, если он используется в DLL, но когда я загружаю DLL, которая использует OpenBLAS, а затем пытается ее освободить, функция FreeLibrary зависает (deadlock?) И никогда не возвращается.

Я использую готовый пакет, загруженный с http://sourceforge.net/projects/openblas/files/v0.2.8/
компиляция тестовой программы с помощью Visual Studio 2010.

Есть идеи?

Вот код для воспроизведения проблемы:

Пустышка DLL, использующая OpenBLAS, ничего не делает:

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

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …