LINUX.ORG.RU

fortran+Qt


0

0

Есть мнго библиотек на fortran надо сделать gui на qt. Первый вариант который приодит в голову это сделать соответствующие консольные програмы а затем приделать к ним front end на qt. Как еще можно это сделать? Можно ли подключить библиотеки напрямую к qt?

anonymous

а какие проблемы с вызовом фортрановских функций из C++ проги?
объявляешь функцию как extern "C" и добавляешь к имени символ "_".
далее надо учесть, что в фортране аргументы передаются по ссылке, поэтому заменяешь integer->int*, character->char*, double->double * и тп.

например есть фортрановская либа с функцией


c\Usage:
c call dnaupd
c ( IDO, BMAT, N, WHICH, NEV, TOL, RESID, NCV, V, LDV, IPARAM,
c IPNTR, WORKD, WORKL, LWORKL, INFO )
c\Arguments
c IDO Integer. (INPUT/OUTPUT)
c BMAT Character*1. (INPUT)
c N Integer. (INPUT)
c WHICH Character*2. (INPUT)
c NEV Integer. (INPUT/OUTPUT)
c TOL Double precision scalar. (INPUT)
c RESID Double precision array of length N. (INPUT/OUTPUT)
c NCV Integer. (INPUT)
c LDV Integer. (INPUT)
c IPARAM Integer array of length 11. (INPUT/OUTPUT)
c IPNTR Integer array of length 14. (OUTPUT)
c WORKD Double precision work array of length 3*N. (REVERSE c c LWORKL Integer. (INPUT)
c INFO Integer. (INPUT/OUTPUT)

пишешь в .h файле:
extern "C" {
void dnaupd_(int*ido, char*bmat, int*n, char *which, int*nev, double *tol, double *resid, int *ncv, double *v, int*ldv,
int *iparam, int *ipntr, double *workd, double *workl, int *lworkl, int *info);
}

в .c/.cpp вызываешь:
dnaupd_ ( &ido, bmat, &n, which, &nev, &tol, resid,
&ncv, v, &ldv, iparam, ipntr, workd, workl, &lworkl,
&info );

Reset ★★★★★
()
Ответ на: комментарий от Reset

На фортране вообще кроме спец. матики лучше ничего не писать ;) Фронтенд на любом простеньком язычке лучше сделать, а не засовывать все в 1 модуль, имхо.

AiLr ★★
()
Ответ на: комментарий от AiLr

про засовывание в один модуль я ничего не говорил, фортрановская библиотека может быть хоть бинарной, её вообще трогать не надо, я описал способ вызова из неё функций.

Reset ★★★★★
()

Приходилось когда-то такое делать. %-/ Делал питоновскую обвязку для фортрановских библиотек с помощью F2PY, а гуи писал на PyQt. =)

ero-sennin ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.