fortran語言調用fortran寫的dll


環境:vs2013+IVF 2011

有時候想把fortran寫的常用的函數編譯為DLL,以供不同的fortran exe調用,這時候應該怎樣做呢?【參考 彭國倫老師 fortran95 程序設計 書349和353頁】

下面以寫一個計算圓面積的dll來示例:

首先新建一個解決方案(solution),然后添加一個工程(project),一個解決方案下可以有多個工程,每個工程可以認為是一個大的功能區,每個都可以是一個完善的可執行軟件exe。

 新建一個  fortran dynamic library類型的工程 sub:

 1 subroutine SUB(S,R)
 2 !程序作用是根據傳入的圓的半徑R,計算圓的面積S 
 3 !DEC$ ATTRIBUTES DLLEXPORT :: SUB
 4 !上面的語句是編譯功能語句,DLL中可以被外界調用的函數都要寫上面的語句,聲明哪些函數可以被外界訪問,不然外界無法訪問。     
 5 implicit none
 6 double precision S,R
 7 write(*,*)"You are use subroutline in DLL"
 8 S=3.141592653*R**2!計算的面積可以通過傳址傳出去
 9 return
10 end
11       

此時可以 點擊 生成---生成解決方案,會生成sub.lib 和 sub.dll

 

然后可以在同一個解決方案下新建另外一個 可執行文件類型的 工程 mainCallDll:

 1 program callDll_SUB
 2 implicit none
 3 double precision area,r
 4 r=2.0
 5 call sub(area,r)
 6 write(*,*)"r=",r,"area=",area
 7 pause
 8 stop
 9 end
10       

最后在mainCallDll工程上右鍵,設為啟動項,然后再右鍵本工程,添加,選擇sub工程中的sub.lib,此時可以點 擊 生成---生成解決方案。

但此時是不可以運行的,要把sub.dll復制到與 mainCallDll.exe同目錄下才行。

代碼組織結構:

------


 

接下來調試dll:【參考:https://blog.csdn.net/caoshangpa/article/details/78733379   https://blog.csdn.net/qianghaohao/article/details/50190905

0. 將exe拷貝到dll生成目錄下,並設置dll工程為啟動項目。然后:

 1.

 

 2.

 3.

 

 4.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM