Я пытаюсь написать оболочку C для вызова набора функций в модуле Fortran. Я начинаю с чего-то основного, но я пропускаю что-то важное.C Wrapper Calling Fortran Функции
Я пробовал добавлять/добавлять разные числа символов подчеркивания. Я также пытался связать gcc вместо gfortran. То, что я покажу ниже, дает простейшую ошибку (ошибки).
Я работаю над Mac, работающим с Yosemite 10.10.3, GNU Fortran 5.1.0 и компилятором C, который поставляется с Xcode.
main.c
#include "stdio.h"
int main(void)
{
int a;
float b;
char c[30];
extern int _change_integer(int *a);
printf("Please input an integer: ");
scanf("%d", &a);
printf("You new integer is: %d\n", _change_integer(&a));
return 0;
}
intrealstring.f90
module intrealstring
use iso_c_binding
implicit none
contains
integer function change_integer(n)
implicit none
integer, intent(in) :: n
integer, parameter :: power = 2
change_integer = n ** power
end function change_integer
end module intrealstring
Вот как я компиляции, наряду с сообщением об ошибке:
$ gcc -c main.c
$ gfortran -c intrealstring.f90
$ gfortran main.o intrealstring.o -o cwrapper
Undefined symbols for architecture x86_64:
"__change_integer", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
$
ошибки предлагает ваш 32-битный и 64-битный код? – cjb110
Всегда используйте тег [tag: fortran], используйте теги для отдельных версий, только если вы хотите подчеркнуть, что вам не нужна более новая стандартная версия. –