Я пытаюсь узнать, как вызвать функцию в dll fortran из исполняемого файла fortran в Windows. Я работаю с гфортраном 4.7 и фотраном в затмении.
Моя тестовая dll имеет единственную функцию в hello.f90:
hello.f90
subroutine hello
implicit none
print *, "Hello World!"
end subroutine hello
со следующим make-файлом:
all:
gfortran -Wall -c hello.f90
gfortran -shared -o hello.dll hello.o
Dependency Walker подтверждает, что функция "hello_" экспортирована.
Теперь я пытаюсь создать программу, которая вызывает ее динамически. Я построил следующее на основе примеров, которые нашел в Интернете, но он не компилируется:
main.f90
program main
implicit none
integer :: p
pointer (q, hello)
p = loadlibrary("hello.dll")
q = getprocaddress(p, "hello_")
call hello
end program main
makefile
all:
gfortran -Wall -pedantic -fcray-pointer main.f90
Сообщение об ошибке заключается в том, что функция LoadLibrary (и getprocaddress) не имеет типа IMPLICIT. Я подозреваю, что это означает, что эти функции не определены, и мне нужно как-то включить их заголовки. Это правильно? Я нашел объявление для loadlibrary в c: \ mingw \ include \ winbase.h
ваше здоровье,
Марк
char(0)
после hello.dll и hello_, чтобы он заканчивал строку ?? - person Kyle Kanos   schedule 05.01.2013