첫 번째 대답의 링크는 구식 방법을 설명합니다. Fortran을 C에서 호출하거나 C에서 Fortran으로 호출하는 것이 훨씬 쉬워졌습니다. ISO C 바인딩을 Fortran에 추가하는 것입니다. 이 포트란 언어 기능을 사용하면 Fortran 컴파일러가 C와 이진 호환되는 실행 가능 코드를 방출하도록 지시합니다. 프로그래머는 연결을 "해킹"할 필요가 없으며 컴파일러와 플랫폼에 독립적이기 때문에 언어의 일부이기 때문입니다. 기술적으로 ISO C 바인딩은 Fortran 2003의 일부이지만 여러 컴파일러에서 사용할 수 있습니다 (예 : gfortran 버전 4.3 이상 및 Intel ifort).
C에서 Fortran 서브 루틴이나 함수를 호출하려면 바인드 C 옵션을 사용하여 Fortran 서브 루틴이나 함수를 선언하고 바인드에서 인수 선언을 제공하는 C 호환 유형을 사용하십시오. gfortran 매뉴얼에는 "혼합 언어 프로그래밍"예제가 있습니다. ISO C 바인딩은 언어의 일부이므로,이 섹션은 주로 컴파일러에 독립적입니다. 스택 오버플로 및 웹의 다른 곳에서 이전 답변에 다른 예제가 있습니다. 이 사건 -
가
subroutine test (varint1, varflt2) bind (C, name="MyTest")
use iso_c_binding
integer (kind=c_int32_t), intent (in) :: varint1
real (kind=c_float), intent (out) :: varflt2
바인드 C 이름이 "MYTEST"는 포트란 이름을 오버라이드 : 여기
는 C에서 호출되는 서브 루틴의 포트란 서브 루틴 선언 짧은 코드 단편 (안된) 인 민감한, 포트란과는 다릅니다. 밑줄에 대해 걱정할 필요가 없습니다! 변수 유형은 분명해야합니다 ... gfortran 매뉴얼이나 다른 곳에서 사용 가능한 것을 찾으십시오.
좀 더 정확한 대답은 아마 당신이 요구하는 특정 C 컴파일러와 포트란 컴파일러를 알아야 할 것입니다. – SingleNegationElimination
수정 됨. 죄송합니다 깜빡 : – nunolourenco
[fwrap] (https://github.com/kwmsmith/fwrap)을 알고 있습니까? – ephemient