我希望能够在我的 Fortran 应用程序中调用网络功能。我的老板希望我用 Fortran 做所有事情,而不是使用 C 和 Fortran。我们已经在 Windows 上使用 PGI 的 Fortran 编译器完成了该应用程序的一个版本。我们正在将它转移到 Linux 上,我们可能会在其中使用他们的编译器。现在,我正在使用 gfortran。
我为这些网络调用创建了一个接口,并且一切都编译和链接。下面的代码与我正在做的类似,除了接口和常量在一个模块中。
PROGRAM MAIN
INTEGER,PARAMETER ::AF_INET = 2
INTEGER,PARAMETER ::SOCK_STREAM = 1
INTEGER,PARAMETER ::IPPROTO_TCP = 6
INTERFACE
FUNCTION socket(domain,type,protocol)
INTEGER ::socket,domain,type,protocol
END FUNCTION
END INTERFACE
sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)
WRTIE(*,*)"Socket returned: ",sock
END PROGRAM
当我运行程序时,套接字函数返回 -1 失败。我真的不知道发生了什么事。我没有在命令行上添加任何库,所以我猜它与默认库正确链接。我编译使用
gfortran -o MAIN_PROGRAM MAIN_PROGRAM.f90 -fno-underscoring