資源描述:
《matlab與vc混合編程之動(dòng)態(tài)鏈接庫(dll)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、摘要:許多工程軟件需要用到復(fù)雜的數(shù)學(xué)算法。VC++能夠形成各種用戶界面,并可以直接與系統(tǒng)及底層硬件交換數(shù)據(jù)。因此研究VC++和Matlab的混合編程具有很大的實(shí)際意義。該文討論了如何使用Matlab的Complier將*.m函數(shù)編譯為動(dòng)態(tài)鏈接庫DLL,提供給VC++調(diào)用的方法,提供了一種VC++與Matlab混合編程的快速實(shí)現(xiàn)。關(guān)鍵詞:MatlabVC++MCCComplier動(dòng)態(tài)鏈接庫DLLMatlab作為當(dāng)今世界上應(yīng)用最為廣泛的數(shù)學(xué)軟件,具有非常強(qiáng)大的數(shù)值計(jì)算、數(shù)據(jù)分析處理、系統(tǒng)分析、圖形顯示甚至符號(hào)運(yùn)算的功能。已經(jīng)在如生物工程,圖像處理,語音處理,雷達(dá)探
2、空,聲納探水,地震探地,以及控制論,系統(tǒng)論等各個(gè)領(lǐng)域得到廣泛的應(yīng)用。它是一個(gè)完整的數(shù)學(xué)平臺(tái),在這個(gè)平臺(tái)上,用戶只需寥寥數(shù)語就可以完成十分復(fù)雜的功能,大大提高了工程分析計(jì)算、圖像處理的效率。但是Matlab強(qiáng)大的功能只能在它所提供的平臺(tái)上才能使用,即用戶必須在安裝Matlab系統(tǒng)的機(jī)器上才能執(zhí)行*.m文件。這樣當(dāng)用戶需要將在Matlab下已開發(fā)完畢的復(fù)雜算法應(yīng)用到高級(jí)語言開發(fā)環(huán)境下時(shí)就帶來了問題,是將現(xiàn)成的東西集成高級(jí)語言開發(fā)的程序中呢?還是用高級(jí)語言再重新實(shí)現(xiàn)一遍?顯然大家所期望的是減少工作量,最好能將Matlab下開發(fā)好的程序或函數(shù)直接應(yīng)用到高級(jí)語言開發(fā)的程
3、序中,這就是Matlab與高級(jí)語言的混合編程問題。VC++是當(dāng)前Windows下的主要編程語言之一,它能方便地形成應(yīng)用軟件中所需要的各種用戶界面和工具并直接與系統(tǒng)及底層硬件交換數(shù)據(jù)。用VC++開發(fā)的系統(tǒng)具有容易維護(hù)升級(jí)、界面友好、代碼效率高、執(zhí)行速度快等一系列優(yōu)點(diǎn),因此已成為目前應(yīng)用軟件開發(fā)中廣泛采用的主要工具之一因此,如何將Matlab與VC++進(jìn)行有效的混合編程廣受工程科研人員的關(guān)注。解決這個(gè)問題,不僅能更好地發(fā)揮Matlab強(qiáng)大的功能,還能快速地進(jìn)行軟件開發(fā),尤其是當(dāng)軟件開發(fā)中需要實(shí)現(xiàn)復(fù)雜的數(shù)學(xué)算法、圖形處理時(shí)尤為迫切。研究VC++與Matlab的混合編
4、程具有很大的實(shí)際意義。MATLAB與VisualC++結(jié)合的方法有多種,但其實(shí)用程度與范圍不同。常用的方法有:(1)將Matlab程序編譯成C/C++源文件并嵌入VC++;(2)在C/C++程序中利用Matlabengine調(diào)用Matlab函數(shù);(3)在C/C++程序中直接使用MatlabC/C++MathLibrary;(4)將.m文件編譯成*.dll文件嵌入到VC++的程序中?;趯?shí)用性、易用性的考慮,本文主要討論第四種方法。另外隨著Matlab版本的升級(jí),原來的mathlibrary已經(jīng)并入了Compiler之中,是否是mathworks比較推崇DLL的
5、方式呢?本文通過一個(gè)簡(jiǎn)單的例子來說明Matlab和VC++混編的具體過程(環(huán)境為Matlab6.5&VC++6.0)。1Matlab編譯環(huán)境的設(shè)置為了能夠使用Matlab的Complier將*.m函數(shù)文件編譯為動(dòng)態(tài)鏈接庫DLL,必須對(duì)Matlab的環(huán)境做出相應(yīng)的配置。具體做法如下:在Matlab的CommandWindow下輸入命令mbuild–setup,并根據(jù)Matlab的提示選擇合適的編譯器,筆者使用的是MicrosoftVisualC++。過程如下:>>mbuild-setupPleasechooseyourcompilerforbuildingsta
6、ndaloneMATLABapplications:Wouldyoulikembuildtolocateinstalledcompilers[y]/n?Selectacompiler:[1]LccCversion2.4inD:MATLAB6P5syslcc[2]MicrosoftVisualC/C++version7.0inC:ProgramFilesMicrosoftVisualStudio.NET[3]MicrosoftVisualC/C++version6.0inD:MicrosoftVisualStudio[0]NoneCompiler:3
7、Pleaseverifyyourchoices:Compiler:MicrosoftVisualC/C++6.0Location:D:MicrosoftVisualStudioArethesecorrect?([y]/n):然后,在CommandWindow中輸入命令cd(prefdir);mccsavepath;這是為了后面使用Matlab在VC++IDE中的Add-in作準(zhǔn)備。然后輸入命令mex–setup,以類似的方法配置編譯器。至此,Matlab的配置完成。如有疑問,可以參閱Matlab的幫助MatlabCompilerGettingStarted
8、Installationandcon