Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

dll в Фортране

12K
09 августа 2005 года
lenbek
2 / / 09.08.2005
Если есть специалисты по Фортрану, скажите, как на нём вызывать DLL. Пусть есть написанная на C++ My.dll с функцией
int IntAdd(int a, int b)
{
return (a+b);
}
Как на Фортране загрузить My.dll и вызвать эту функцию?
284
12 августа 2005 года
michael_is_98
587 / / 25.02.2005
Цитата:
Originally posted by lenbek
Если есть специалисты по Фортрану, скажите, как на нём вызывать DLL. Пусть есть написанная на C++ My.dll с функцией
int IntAdd(int a, int b)
{
return (a+b);
}
Как на Фортране загрузить My.dll и вызвать эту функцию?



Так же как и в случае использования Си++ - а именно через API-функции

LoadLibrary,FreeLibrary

GetProcAddress

12K
15 августа 2005 года
lenbek
2 / / 09.08.2005
А можно пример? Код на Фортране, загружающий библиотеку, использующий функцию и освобождающий библиотеку
284
15 августа 2005 года
michael_is_98
587 / / 25.02.2005
Цитата:
Originally posted by lenbek
А можно пример? Код на Фортране, загружающий библиотеку, использующий функцию и освобождающий библиотеку


Попытался сделать код. Вот что получилось (компилируется с ошибкой на call hProc1)

Код:
program test
use msfwin
interface
    subroutine hProc(i,i1)
    !MS$ATTRIBUTES DLLIMPORT::hProc
    integer i,i1
    end subroutine
end interface
integer hMod,ret, hProc1
integer, parameter::i=1,i1=2

hMod=LoadLibrary("vprodll.dll")
hProc1=GetProcAddress(hMod,"_SEEDDLL@8")

call hProc1(i,i1)

ret=FreeLibrary(hMod)

end program

Т.е. на Фортране не знаю как, зная адрес функции, ее вызвать - если вообще это возможно. Сама загрузка библиотеки (и освобождение) , получение адреса функции срабатывает.
На Си/Си++ это возможно (там существуют указатели на функции).
Вообще в подобных случаях поступают как раз наоборот: можно написать подпрограммы на Фортране(например, научные подпрограммы со сложными вычислениями), оформить их в виде библиотек, а затем вызывать из других языков - Си/Си++, DELPHI.
В этих языках проще реализовать интерфейс пользователя.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог