Tôi muốn có thể gọi các chức năng mạng trong ứng dụng Fortran của mình. Ông chủ của tôi muốn tôi làm mọi thứ ở Fortran thay vì sử dụng C và Fortran. Chúng tôi đã thực hiện một phiên bản của ứng dụng bằng trình biên dịch Fortran của PGI trên Windows. Chúng tôi đang chuyển nó sang Linux, nơi chúng tôi có thể sử dụng trình biên dịch của họ. Ngay bây giờ, tôi đang sử dụng gfortran.ổ cắm lập trình gfortran
Tôi đã tạo giao diện cho các cuộc gọi mạng này và mọi thứ biên dịch và liên kết. Mã dưới đây là một cái gì đó tương tự như những gì tôi đang làm ngoại trừ các giao diện và hằng số là trong một mô-đun.
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
Khi tôi chạy chương trình, chức năng socket không trả về -1. Tôi thực sự không biết chuyện gì đang diễn ra. Tôi không thêm bất kỳ thư viện trên dòng lệnh vì vậy tôi đoán nó là liên kết với các thư viện mặc định một cách chính xác. Tôi biên dịch bằng cách sử dụng
gfortran -o MAIN_PROGRAM MAIN_PROGRAM.f90 -fno-underscoring
Bạn đã cố gắng để kiểm tra errno? –