筆者最近接手乙個用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 是由 提供的乙...