亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Fortran Powerstatio 4.0 靜態(tài)鏈接庫建立與使用

        2023-11-20 10:59:50陳彥瑾
        科學(xué)技術(shù)創(chuàng)新 2023年26期
        關(guān)鍵詞:程序代碼主程序子程序

        陳彥瑾

        (河海大學(xué) 水利水電學(xué)院,江蘇 南京)

        前言

        Fortran 語言是世界上最早出現(xiàn)的計(jì)算機(jī)高級編程語言,在科學(xué)和工程計(jì)算領(lǐng)域相比其他編程語言更具優(yōu)勢。即使在計(jì)算機(jī)語言發(fā)展到今天的多元時(shí)代,F(xiàn)ortran 語言仍在廣泛使用[1-2]。因此,完善其使用方法或功能,還是有一定意義的。

        王柯等[1]基于Fortran 語言,分析了糧堆溫度、水分含量、儲糧害蟲增長量以及殺蟲劑濃度衰減的變化。楊成坤等[2]研發(fā)地下及井中探測軟件平臺,其中很多模塊由Fortran 語言編寫。齊云飛、胡凡[3]基于Fortran與VB 混合編程建立了水庫群聯(lián)合優(yōu)化調(diào)度系統(tǒng)。很多高校至今仍將Fortran 語言列為本科生教學(xué)主干課程[4]。

        使用靜態(tài)鏈接庫對部分程序進(jìn)行封裝是常用的手段之一,使用很廣泛。本文主要介紹在Fortran PowerStation 4.0 環(huán)境下建立靜態(tài)鏈接庫,利用主程序調(diào)用靜態(tài)庫的方法,并結(jié)合示例程序介紹該方法的使用。

        1 Fortran 靜態(tài)鏈接庫建立方法

        1.1 建立靜態(tài)鏈接庫項(xiàng)目工作空間

        首次建立靜態(tài)鏈接庫項(xiàng)目工作空間時(shí),需要在Fortran Powerstation 4.0 環(huán)境下打開 Microsoft Developer Studio,執(zhí)行File-New 命令,在彈出的新建(New)窗口中選擇項(xiàng)目工作空間(Project Workspace),如圖1 所示,點(diǎn)擊OK 后在New Project Workspace 對話框中選擇項(xiàng)目類型(Type)為Static Library(靜態(tài)鏈接庫),輸入項(xiàng)目文件名稱如Sub,軟件默認(rèn)的文件存儲位置為“C:MSDEVProjects”,點(diǎn)擊Creat 后會在Projects 目錄(即文件夾,以下所謂“目錄”均指文件夾)下生成名為Sub 的項(xiàng)目文件夾,Sub 目錄內(nèi)生成Sub.mak 文件。這時(shí),靜態(tài)鏈接庫的項(xiàng)目工作空間已經(jīng)建立完成,接下來就可以準(zhǔn)備輸入靜態(tài)庫程序代碼。

        圖1 Fortran Powerstation 4.0 新建文件建立方法

        1.2 編寫靜態(tài)鏈接庫程序代碼

        執(zhí)行File-New 命令,在新建文件對話框中選擇Text File (或工具欄中選擇New Source File),生成Text1 文件,文件類型保存(File-Save)為Sublib.for,然后輸入程序代碼。靜態(tài)鏈接庫的程序代碼與一般子程序的編寫規(guī)則完全一樣。程序代碼編寫完成并存盤后,執(zhí)行工具欄中Compile 命令 (或菜單欄Bulid-Compile Sublib.for)編譯Fortran 程序,此時(shí)彈窗提示“This File is not included in the Project”,確認(rèn)添加即可。

        Fortran Powerstation 4.0 軟件默認(rèn)的編譯模式是Win32 Debug 模式,信息欄中提示編譯正常通過之后,會在Sub 目錄下建立Debug 文件夾并生成Sublib.obj 文件。執(zhí)行工具欄中Build 命令 (或菜單欄Bulid-Bulid Sublib.lib)建立鏈接庫,在Debug 目錄下生成Sub.lib 文件,此文件即為新建立的靜態(tài)鏈接庫文件。由于鏈接庫文件一般不需要經(jīng)常修改,只要聲明程序接入點(diǎn)便可使用,因此可以在編譯程序時(shí)選擇Release 模式,以提高執(zhí)行效率。此時(shí)會對應(yīng)生成Release 目錄及相應(yīng)的obj 和lib 文件。

        如果用來做靜態(tài)鏈接庫的程序代碼已存在,即Sublib.for 文件已有,就只需要將其添加到靜態(tài)庫項(xiàng)目工作空間中去。建立好的項(xiàng)目工作空間(即Projecct Workspace-Static Library)后,執(zhí)行菜單欄Insert-Files into Project 命令,在彈出的對話框中找到Sublib.for 程序代碼,點(diǎn)擊OK。執(zhí)行Compile 和Bulid 命令后,會對應(yīng)在Sub 文件夾的debug 或Release 目錄生成Sublib.obj 和Sub.lib 文件。

        1.3 主程序調(diào)用靜態(tài)鏈接庫

        主程序代碼中不包含鏈接庫代碼,主程序調(diào)用時(shí)只要知道鏈接庫中子程序名稱或模塊名稱即可。假定此時(shí)靜態(tài)庫Sub.lib 文件已經(jīng)生成,主程序也已經(jīng)完成。剩下的工作就是如何運(yùn)行主程序,并調(diào)用靜態(tài)庫,完成相應(yīng)計(jì)算任務(wù)。

        在主程序代碼Program Main 后添加語句“!MS$OBJCOMMENT LIB:'Sub.lib'”可以實(shí)現(xiàn)靜態(tài)庫的添加。其中“!”在此處是偽注釋的用法,用來聲明將Sub.lib鏈接庫文件添加到主程序中。該行在編譯的過程中并不是注釋語句,可以與編譯器進(jìn)行通訊,不可缺失。

        當(dāng)主程序調(diào)用(靜態(tài)庫中的)子程序,如Sub1 時(shí),只需在主程序代碼中需要調(diào)用Sub1 的位置使用Call sub1 語句來聲明調(diào)用子程序,其中Sub1 為子程序名。當(dāng)然,需要注意的是需將名為Sub.lib 的鏈接庫文件存放到主程序所在的目錄下連接時(shí)才可以搜索到。此時(shí),便可打開主程序,如A.for,執(zhí)行Bulid 命令,可以看到編譯連接成功,即可執(zhí)行Bulid Execute A.exe,主程序會調(diào)用靜態(tài)庫中子程序Sub1 完成計(jì)算。

        1.4 含Module 模塊的靜態(tài)鏈接庫

        一些程序封裝為模塊使用起來可能更方便,只要在主程序代碼中使用Use ModD 語句就可調(diào)用模塊中相應(yīng)函數(shù)及子程序,其中ModD 為模塊名。將Module模塊編譯為靜態(tài)庫時(shí),同樣要先建立Static Library 類型的名為Module 項(xiàng)目工作空間。含Module 模塊的靜態(tài)庫程序代碼Mod.for 結(jié)構(gòu)如下:

        Module ModD

        Contains

        ……

        End Subroutine

        End Module

        中間省略的代碼為子程序代碼,需要指出此時(shí)子程序結(jié)束語句應(yīng)當(dāng)用End Subroutine 而不能采用省略Subroutine 的End 形式。依次執(zhí)行Compile 和Bulid 命令,在Debug 或Release 目錄下會生成modd.mod、Mod.obj 文件和Module.lib 文件。擴(kuò)展名mod 文件為模塊,lib 文件為靜態(tài)庫文件。

        主程序接入含Module 模塊的靜態(tài)庫時(shí)首先使用語句“!MS$ OBJCOMMENT LIB: 'Module.lib'”添加靜態(tài)庫,使用模塊時(shí)需要用Use ModD 語句聲明使用,使用Call sub 命令可調(diào)用相應(yīng)的子程序。此處需要注意的是,應(yīng)將modd.mod 模塊文件和Module.lib 鏈接庫文件同時(shí)存放到主程序的目錄下。

        鏈接庫可以嵌套使用,因此在將Module 模塊編譯為鏈接庫時(shí)也可調(diào)用其他靜態(tài)庫。

        2 靜態(tài)鏈接庫的更新維護(hù)

        由于不同問題的復(fù)雜性,往往要對程序進(jìn)行不斷改進(jìn)來適應(yīng)更多的情況,因此就需要對已經(jīng)生成的靜態(tài)鏈接庫進(jìn)行不定期的更新和維護(hù)。

        首先確認(rèn)Sub.mdp 及Sub.mak 文件存在,執(zhí)行菜單欄File-Open Workspace 命令,在Open Project Workspace 窗口中打開sub.mdp 文件,在項(xiàng)目空間樹形菜單中雙擊Sublib.for 可修改程序代碼文件,修改存盤后執(zhí)行Bulid 命令就可以在Debug 或Release 目錄下建立新的Sub.Lib 文件。

        需要指出,靜態(tài)庫進(jìn)行更新維護(hù)后,重新生成了Sub.lib 文件。需將此新靜態(tài)庫文件存放到主程序目錄下,而且主程序在使用前必須重新編譯連接生成新的A.exe。這是因?yàn)榕f的可執(zhí)行程序A.exe 是將更新前的鏈接庫程序編譯到了A.exe 中,如果只重新鏈接或只執(zhí)行舊的可執(zhí)行程序,則調(diào)用的鏈接庫仍為上次編譯的更新前的內(nèi)容,因此,必須重新編譯連接主程序代碼生成新的A.exe 方可使用新靜態(tài)庫。

        3 靜態(tài)鏈接庫使用示例

        本節(jié)結(jié)合Fortran 語言編寫的有限元計(jì)算程序中一部分功能,詳細(xì)介紹使用靜態(tài)鏈接庫的具體步驟。

        示例子程序的功能為:通過讀取線彈性材料的彈性常數(shù)彈性模量E 和泊松比ν,形成有限元法中使用的物理方程的彈性矩陣D,計(jì)算公式如式(1)。

        矩陣D 完全由E 和ν 決定,可以把由E 和ν形成D 的過程建立為靜態(tài)庫,主程序只要提供材料的E 和ν 值,通過調(diào)用靜態(tài)庫中對應(yīng)的子程序SubD 即可得到材料彈性矩陣D。子程序代碼見表1。

        表1 材料彈性矩陣D 子程序

        建立名為Sub 項(xiàng)目類型為Static Library 的項(xiàng)目文件目錄,添加鏈接庫程序代碼Sublib.for,以Win32 Release 模式執(zhí)行Compile 及Bulid 命令,編譯連接程序后會在Sub 目錄下生成Sub.mak,sub.mdp 文件,Release 目錄下生成Sub.lib、Sublib.obj 文件,其中Sub.lib 即是所需要的靜態(tài)庫文件,主程序調(diào)用時(shí)只要在程序代碼中聲明程序接入點(diǎn)即可調(diào)用鏈接庫中子程序。

        在主程序中使用語句“!MS$ OBJCOMMENT LIB:'Sub.lib'”調(diào)用靜態(tài)庫,使用Call SubD 語句調(diào)用靜態(tài)庫中相應(yīng)子程序。主程序代碼如表2 所示。

        表2 材料彈性矩陣D 子程序

        用Microsoft Developer Studio 打開主程序代碼Main.for 文件,確認(rèn)之前項(xiàng)目空間關(guān)閉后,執(zhí)行Compile 和Bulid 命令,編譯鏈接主程序代碼。注意,此處需將Sub 文件夾Release 目錄下的Sub.lib 文件存放到當(dāng)前主程序目錄下,主程序調(diào)用鏈接庫時(shí)才可搜索到。當(dāng)鏈接庫中含有Module 模塊時(shí),項(xiàng)目空間建立方法,需要將Modd.mod 模塊和Module.lib 鏈接庫文件一并放到主程序目錄下方可鏈接成功。本例輸入文件E-v.dat 數(shù)據(jù)為第一行2;第二行為50000.0,0.30;第三行為100000.0,0.25。

        執(zhí)行Bulid-Bulid Execute Main.exe,輸出上述兩種材料的6*6 的彈性矩陣D,說明主程序調(diào)用Sub.lib鏈接庫的SubD 子程序形成矩陣D 是成功的。主程序得到的矩陣D 結(jié)果如下:

        4 結(jié)論

        本文詳細(xì)的介紹了在Fortran Powerstation 4.0 環(huán)境下建立靜態(tài)鏈接庫并在主程序中調(diào)用靜態(tài)庫里子程序的使用方法,主要結(jié)論如下:

        (1) 本文介紹的靜態(tài)鏈接庫的建立和使用十分方便,可方便地用于大型程序中通用子程序的封裝,具有較強(qiáng)的實(shí)用價(jià)值。

        (2) 靜態(tài)鏈接庫可以包含多個(gè)子程序及Module模塊,靜態(tài)庫之間也可以嵌套使用,主程序亦可以同時(shí)調(diào)用多個(gè)靜態(tài)庫,其適用性很強(qiáng)。

        (3) Fortran Powerstation4.0 環(huán)境下使用靜態(tài)鏈接庫方法十分簡單,只需在主程序代碼中添加一行語句,編譯連接主程序就可以使用。

        猜你喜歡
        程序代碼主程序子程序
        淺談數(shù)控銑削技術(shù)代碼程序的嵌套方式研究
        電控冰箱軟件模塊化設(shè)計(jì)
        日用電器(2019年12期)2019-02-26 01:53:06
        計(jì)算機(jī)網(wǎng)絡(luò)信息安全未來發(fā)展趨勢
        時(shí)光倒流 換回PotPlayer老圖標(biāo)
        基于圖元裝接模式由程序流程圖自動生成源代碼
        軟件工程(2016年11期)2017-01-17 16:56:57
        淺談子程序在數(shù)控車編程中的應(yīng)用
        子程序在數(shù)控車加工槽中的應(yīng)用探索
        西門子840D系統(tǒng)JOG模式下PLC調(diào)用并執(zhí)行NC程序
        簡化編程與子程序嵌套的應(yīng)用
        科技傳播(2011年24期)2011-08-29 05:39:46
        未經(jīng)授權(quán)的第三方軟件侵權(quán)問題研究
        ——以“騰訊與360之爭”為視角*
        久久国产精品一国产精品金尊| 蜜桃成人永久免费av大| 亚洲国产综合久久精品| 丝袜美腿国产一区精品| 国产真实乱对白精彩| 久草视频福利| 风韵丰满妇啪啪区老老熟女杏吧| 久久一区二区三区久久久| 亚洲av无码乱码国产精品| 男人无码视频在线观看| 久久国产高潮流白浆免费观看 | 天天躁夜夜躁天干天干2020| 国产精品一区二区电影| 蜜臀av国内精品久久久人妻| 一区二区亚洲精品在线| 亚洲精品国产av天美传媒| 亚洲日本欧美产综合在线| 日韩精品有码中文字幕 | 国产成人精品电影在线观看18 | 国产亚洲欧美在线观看的| 人妻熟女妇av北条麻记三级| 蜜桃av噜噜一区二区三区策驰| 99精品人妻少妇一区二区| 综合五月网| 少妇一区二区三区精选| 无码人妻丰满熟妇啪啪网不卡 | 欧美亚洲国产一区二区三区| 亚洲精品国产综合一线久久| 国产一区二区三区av香蕉| 国产亚洲精品熟女国产成人| 桃花色综合影院| 精品一区二区三区在线视频观看| 中文乱码字幕在线亚洲av| 人妻少妇精品视频专区| 色诱久久av| 亚洲精品成人久久av| 放荡的美妇在线播放| 久久精品国产亚洲av麻| 黄片在线观看大全免费视频| 美女主播福利一区二区| 欧美大肥婆大肥bbbbb|