Я построил Фортран DLL и теперь пытаюсь использовать его на Фортране. Проблема в том, что я не могу правильно связать главное с dll.
Я на WIndows10 и использую gfortran от cygwin (32-битная версия cygwin, gfortran поставляется из пакета i686-w64-mingw32) .
Вот dll: $ more helloworld.f90
function hello()
integer hello
hello=1
return
end
Я компилирую и генерирую dll следующим образом:
gfortran -fno-underscoring -c helloworld.f90
gfortran -shared -o helloworld.dll helloworld.o
Вот основные $ more usehello.f90
program usehello
integer, external :: hello
integer :: i
i=1
write(*,*) hello(i)
stop
end
компиляция в порядке:
i686-w64-mingw32-gfortran.exe -c -fno-underscoring usehello.f90
ссылка не удалась:
i686-w64-mingw32-gfortran.exe usehello.o helloworld.dll -o usehello
error while loading shared libraries: libgfortran-5.dll: cannot open shared object file: No such file or directory
Тем не менее, у меня есть этот файл:
$ ls -l /usr/i686-w64-mingw32/sys-root/mingw/bin/libgfortran-5.dll
-rwxr-xr-x 1 UT013536+l-pg164999 UT013536+Aucun 2460672 4 mars 04:46 /usr/i686-w64-mingw32/sys-root/mingw/bin/libgfortran-5.dll
Я пытался добавить --stati c -libgfortran (я не был убежден в использовании чего-то 'stati c' для DLL, но так ...): Это, по-видимому, правильно, но исполняемый файл fails:
$ i686-w64-mingw32-gfortran.exe usehello.o helloworld.dll -static-libgfortran -o usehello
$ ./usehello
usehello.exe: error while loading shared libraries: libquadmath-0.dll: cannot open shared object file: No such file or directory
Звучит так, как если бы переменная окружения отсутствовала, но я не могу найти никаких сообщений о таких сбоях. Спасибо, если кто-то может помочь ...