Вызов DLL Lapack от Gfortran - PullRequest
       99

Вызов DLL Lapack от Gfortran

0 голосов
/ 19 сентября 2019

Я установил R в Windows, которая создает файл C: \ Programs \ R \ R-3.5.2 \ modules \ x64 \ lapack.dll.Компилятор Фортрана, используемый для сборки R - это gfortranКак я могу вызвать рутину Лапака из Гфортрана?Я пытался

gfortran C: \ Programs \ R \ R-3.5.2 \ modules \ x64 \ lapack.dll xlin.f

, где xlin.f - драйвер и получите сообщение об ошибке

C: ... \ ccwsB76i.o: xlin.f :(. text + 0x120): неопределенная ссылка на `sgesv _ '

1 Ответ

1 голос
/ 21 сентября 2019

Вы всегда можете проверить с помощью программы gendef (доступной как часть установок MinGW-w64), какие функции / подпрограммы содержит DLL.Очевидно, что "modules \ x64 \ lapack.dll" при установке R для Windows - это не та библиотека, которая вам нужна.Правильный - «bin \ x64 \ Rlapack.dll»!

Но это не конец истории.По крайней мере, в случае установки R 3.6.1, эта библиотека содержит только варианты двойной точности подпрограмм LAPACK.Итак, мне нужно было преобразовать вашу программу для использования REAL*8 и DGESV.Но потом это сработало:

> set "PATH=C:\Program Files\R\R-3.6.1\bin\x64;%PATH%"
> set "PATH=C:\msys64\mingw64\bin;%PATH%"
> gfortran xlin.f "C:\Program Files\R\R-3.6.1\bin\x64\Rlapack.dll"
> a.exe
   1.0000000597179521
   1.0000000618499254
   1.0000000465843075

, которое мне удалось воспроизвести в Linux с помощью библиотеки LAPACK по умолчанию.

...