Fortran C CPP混合程式設計 01

2021-09-16 12:24:59 字數 1965 閱讀 7782

筆者最近接手乙個用fortran90、c、python語言混合程式設計的專案,藉著這個機會,將fortran與c、c++混合程式設計的基礎知識在做乙個回顧。

先給出乙個簡單的例項,讓讀者對fotran和c互相呼叫有乙個基本的認識。

分別建立fortran和c檔案,並編寫如下的內容。

testf.f90如下:

program test

integer ii, jj, kk

common /ijk/ ii, jj, kk

real*8 ff

character*32 cc

ii = 2

jj = 3

kk = 4

ff = 9.0567

cc = 'example of a character string'

write(6, 10) ii, ff

10 format('ii= ', i2, ' ff= ', f10.4)

call abc(ii)

write(6, 20) ii

20 format('ii= ', i2)

write(6, 30) ii, jj, kk

call doubleijk(cc)

write(6, 30) ii, jj, kk

30 format('ii= ', i2, ' jj= ', i2, ' kk= ', i2)

write(6, 40) cc

40 format(a32)

stop

end program test

subroutine abc(jj)

jj = jj * 2

return

end subroutine abc

testc.c檔案如下:

#include extern struct

ijk_;

int doubleijk_(char *cc, int ll)

編寫完成之後,在命令列執行:

gfortran -c testf.f90

gcc -c testc.c

gfortran -o testf.o testc.o

./test

得到執行結果如下:

ii=  2 ff=     9.0567

ii= 4

ii= 4 jj= 3 kk= 4

from doubleijk: example of a character string

ii= 8 jj= 6 kk= 8

example of a character string

上述檔案中,fortran檔案呼叫了c檔案中的函式。

testf.f90檔案

subroutine fortfun(ii, ff)

integer ii

real*4 ff

write(6, 100) ii, ff

100 format('ii= ', i2, ' ff= ', f6.3)

return

end subroutine fortfun

testc.cpp檔案

#include extern "c"

int main(int argc, char *ar**)

編寫完成之後,在命令列執行:

gfortran -c testf.f90

g++ -c testc.cpp

g++ -o testf.o testc.o -lgfortran

./test

得到執行結果如下:

ii= 5 ff= 5.500
上述檔案中,c++檔案呼叫了fortran檔案中的子程式。

C C 混合程式設計

c中呼叫c c 中呼叫c都會用到extern c 但兩者的意義卻大不一樣!例 c void foo int x c c code extern c void foo int x 讓c 聯結器能通過過類似於 foo來查詢此函式,而非類似於 foo int這樣的符號。使用extern c 則是告訴編譯器...

( ) ( )混合程式設計例項

混合程式設計例項 首先,開啟vc,然後新建乙個win32 dynamic link library工程,然後在出現的工程型別中選擇預設的空專案 a empty dll project 即不包含任何檔案的工程 然後結束嚮導。手動新增兩個檔案,乙個 c source file 乙個 text file ...

C C 混合程式設計

分類 linux c c 2012 12 26 09 51 655人閱讀收藏 舉報cc 混合程式設計 externc cplusplus 現在,我們就來慢慢的了解吧。一 extern c 的作用 最重點 1.extern c 的真實目的是實現類c和c 的混合程式設計。extern c 是由 提供的乙...