我正在嘗試編寫一個C封裝程序來調用Fortran模塊中的一組函數。我從一些基本的東西開始,但我錯過了一些重要的東西。C封裝程序調用Fortran函數
我試着追加/預先設置不同數目的下劃線。我也嘗試用gcc而不是gfortran鏈接。我在下面顯示的是最簡單的錯誤。
我正在運行Yosemite 10.10.3,GNU Fortran 5.1.0的Mac和Xcode附帶的C編譯器。
的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],僅在您想要強調不需要任何更新的標準版本時才爲各個版本使用標籤。 –