C++與Fortran的混合編程問題

C++與Fortran的混合編程問題

ID:41033162

大小:328.00 KB

頁數(shù):4頁

時間:2019-08-14

C++與Fortran的混合編程問題_第1頁
C++與Fortran的混合編程問題_第2頁
C++與Fortran的混合編程問題_第3頁
C++與Fortran的混合編程問題_第4頁
資源描述:

《C++與Fortran的混合編程問題》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、C/C++調(diào)用Fortran的使用說明這里將詳細介紹一下在C++中如何調(diào)用用Fortran語言編寫函數(shù)的問題,即Fortran與C++的混合編程問題。通常情況下,C++與Fortran的混合編程問題是利用動態(tài)鏈接庫的方式進行的,換句話說,如果在C/C++中調(diào)用Fortran函數(shù),應(yīng)將Fortran函數(shù)按照一定的協(xié)議編譯為動態(tài)鏈接庫,然后即可實現(xiàn)二者的混合編程問題。實現(xiàn)這一目的有兩種方式:顯示鏈接與隱式鏈接,下面通過兩個非常簡單的實例分別介紹之。編譯環(huán)境:Fortran:推薦使用CompaqVisu

2、alFortran6.0以上的版本,C++:MicrosoftVisualC++6.0。1.顯式鏈接,(a)找開CVF編譯器,然后新建一個FortranDLL工程(選擇FortranDynamicLinkLibrary),并指定工程名,如下圖所示:按確定按鈕,然后新建一個Fortran源文件,并輸入以下的Fortran代碼:(這里僅為說明問題,實際的問題比下面的代碼要復(fù)雜得多。)SUBROUTINEOUTPUT(N)!必須聲明本函數(shù)為輸出函數(shù):DLLEXPORT!DEC$ATTRIBUTESDLL

3、EXPORT::OUTPUT  IMPLICITNONEINTEGERNN=N+10WRITE(*,*)"N=",nENDSUBROUTINEOUTPUT經(jīng)編譯,鏈接后,將在Debug目錄下生成兩個文件,即dll文件與lib文件。(b)啟動VisualC++6.0,然后新建一個console工程(即Win32ConsoleApplication,當(dāng)然在MFC中也是完成可行的),如下圖所示:按確定按鈕,新建一個空的工程后,再新建一個C++源文件,并輸入以下的代碼:#include

4、h>#includeintmain(){typedefvoid(_stdcall*wndProc)(int&);HINSTANCEhLibrary=LoadLibrary("pp.dll");//加載動態(tài)庫文件if(hLibrary==NULL){cout<<"can'tfindthedllfile"<

5、址if(test==NULL){cout<<"can'tfindthefunctionfile."<

6、。下面也通過一個算例進行說明。(1)建立一個Fortran動態(tài)庫文件,其方法與上述完全相同,然后在CVF編譯器中輸入以下的代碼:SUBROUTINEOUTPUT(N)!下面為對Fortran函數(shù)的聲明!ms$if.not.defined(LINKDIRECT)!ms$attributesdllexport::OUTPUT!ms$endifIMPLICITNONEINTEGERNN=N+10WRITE(*,*)"N=",nENDSUBROUTINEOUTPUT編譯通過后,將在Fortran工程文件夾

7、的Debug文件夾中生成兩個文件,即*.dll文件與*.lib文件。(2)新建一個C++Console項目,并新建一個C++文件,然后輸入以下的代碼:#include#include//聲明函數(shù)OUTPUT為extern型的,即是從外部調(diào)用的。extern"C"void_stdcallOUTPUT(int&n);intmain(){intn=3;OUTPUT(n);return0;}然后將Fortran編譯器生成的兩個文件(dll文件與lib文件)復(fù)制

8、到C++的當(dāng)前目錄下,并將lib文件加入到當(dāng)前的C++工程項目中,如下圖所示:點擊菜單“工程-添加工程-Files”,然后選中pp.lib文件即可,如下圖所示:此時即可通過編譯,執(zhí)行此程序,其輸出結(jié)果如下所示:總結(jié)本文通過兩個簡單的實例詳細介紹了如何在C++中調(diào)用Fortran函數(shù)的兩種方法,即顯式鏈接與隱式鏈接。當(dāng)然實際中我們所遇到的問題將會比本實例要復(fù)雜得多,本文僅作為拋磚引玉之用。顯式鏈接與隱式鏈接兩種方法均各自有其優(yōu)缺點,但由于隱式鏈接要比顯示鏈接容易得多,也易于理解,實際

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。