




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Good is good, but better carries it.精益求精,善益求善。Matlab7.0函數(shù)轉(zhuǎn)換成VC+6.0動態(tài)鏈接庫-Matlab7.0函數(shù)轉(zhuǎn)換成VC+6.0動態(tài)鏈接庫(來源于網(wǎng)絡(luò),版權(quán)歸作者所原作者有,如有侵權(quán)立即刪除)1、mcc4.0編譯環(huán)境設(shè)置在桌面上右鍵單擊“我的電腦”圖標(biāo)出現(xiàn)以下菜單單擊“屬性”菜單項(xiàng),出現(xiàn)“系統(tǒng)特性”對話框,單擊“高級”選項(xiàng)卡,如下圖所示在上圖中,單擊“環(huán)境變量”按鈕,出現(xiàn)“環(huán)境變量”對話框,添加系統(tǒng)變量matlab值為C:MATLAB7即1、mcc4.0編譯環(huán)境設(shè)置在桌面上右鍵單擊“我的電腦”圖標(biāo)出現(xiàn)以下菜單單擊“屬性”菜單項(xiàng),出現(xiàn)“系統(tǒng)
2、特性”對話框,單擊“高級”選項(xiàng)卡,如下圖所示在上圖中,單擊“環(huán)境變量”按鈕,出現(xiàn)“環(huán)境變量”對話框,添加系統(tǒng)變量matlab值為C:MATLAB7即matlab7.0的安裝路徑,如下圖所示在環(huán)境變量path中加入C:MATLAB7binwin32,如下圖所示按“確定”完成設(shè)置后,重啟計算機(jī)或注銷當(dāng)前用戶,即可應(yīng)用新設(shè)置。2、Matlab7.0編譯器設(shè)置(1)mex命令設(shè)置(a)運(yùn)行Matlab,在Matlab的命令窗口(CommandWindow)鍵入“mex-setup”命令后,按回車鍵,安裝Matlab編譯器;(b)命令窗口出現(xiàn)如下提示:Pleasechooseyourcompilerfo
3、rbuildingexternalinterface(MEX)files:Wouldyoulikemextolocateinstalledcompilersy/n?此時鍵入”y”,按回車;(c)命令窗口出現(xiàn)如下提示:Pleasechooseyourcompilerforbuildingexternalinterface(MEX)files:Wouldyoulikemextolocateinstalledcompilersy/n?ySelectacompiler:1DigitalVisualFortranversion6.0inC:ProgramFilesMicrosoftVisualStudi
4、o2LccCversion2.4inC:MATLAB6P5syslcc3MicrosoftVisualC/C+version6.0inC:ProgramFilesMicrosoftVisualStudio0None此時鍵入”3”,按回車;選擇MicrosoftVisualC+6.0的編譯器(d)命令窗口出現(xiàn)如下提示:Pleaseverifyyourchoices:Compiler:MicrosoftVisualC/C+6.0Location:C:ProgramFilesMicrosoftVisualStudioArethesecorrect?(y/n):此時鍵入”y”,按回車;確認(rèn)選擇Micr
5、osoftVisualC+6.0的編譯器(2)mbuild命令設(shè)置(a)運(yùn)行Matlab,在Matlab的命令窗口(CommandWindow)鍵入“mbuild-setup”命令后,按回車鍵,安裝Matlab編譯器;(b)命令窗口出現(xiàn)如下提示:PleasechooseyourcompilerforbuildingstandaloneMATLABapplications:Wouldyoulikembuildtolocateinstalledcompilersy/n?此時鍵入”y”,按回車;(c)命令窗口出現(xiàn)如下提示:1LccCversion2.4inC:MATLAB6P5syslcc2Micr
6、osoftVisualC/C+version6.0inC:ProgramFilesMicrosoftVisualStudio0None此時鍵入”2”,按回車;選擇MicrosoftVisualC+6.0的編譯器(d)命令窗口出現(xiàn)如下提示:Pleaseverifyyourchoices:Compiler:MicrosoftVisualC/C+6.0Location:C:ProgramFilesMicrosoftVisualStudioArethesecorrect?(y/n):此時鍵入”y”,按回車,確認(rèn)選擇MicrosoftVisualC+6.0的編譯器,編譯器設(shè)置完成。3、編寫Matlab函
7、數(shù)函數(shù)文件sum_prod.m,內(nèi)容如下:functionsum,prod=sum_prod(p1,p2)sum=p1+p2;%p1與p2的和prod=p1.*p2;%p1與p2的點(diǎn)乘該函數(shù)完成的是矩陣的求和與點(diǎn)乘的功能,下面將介紹把該代碼轉(zhuǎn)換成VC+環(huán)境可用的代碼的方法。4、將Matlab函數(shù)轉(zhuǎn)成DLL函數(shù)在Matlab7.0的CommandWindow下輸入命令:命令1:mcc-Wlib:libsum_prod-Tlink:libsum_prod.m%26ndash;v或命令2:mcc-Wcpplib:libsum_prod-Tlink:libsum_prod.m%26ndash;v生成動
8、態(tài)鏈接庫DLL,編譯完成后,Matlab生成一些文件,其中l(wèi)ibsum_prod.ctflibsum_prod.dlllibsum_prod.hlibsum_prod.lib這些文件是我們后面需要用到的。特別注意:命令1生成的DLL函數(shù)接口的數(shù)據(jù)類型是mxArray,命令2生成的DLL函數(shù)接口的數(shù)據(jù)類型是mwArray。5、VC+6.0工程的創(chuàng)建與設(shè)置(1)建立一個名為Test的C+控制臺工程,在工程中添加一個名為Test.cpp文件(2)對VC6.0,進(jìn)行以下設(shè)置單擊菜單Tools,出現(xiàn)如下菜單單擊Options菜單項(xiàng),出現(xiàn)Options對話框,選擇Directories標(biāo)簽,在includ
9、efiles里面加入:C:MATLAB7EXTERNINCLUDE如下圖所示在Libraryfiles里面加入:C:MATLAB7EXTERNLIBWIN32MICROSOFTMSVC60如下圖所示(3)對該工程,進(jìn)行以下設(shè)置單擊菜單Project,出現(xiàn)如下菜單單擊Setting菜單項(xiàng),出現(xiàn)ProjectSetting對話框,選擇Link標(biāo)簽,在Object/librarymodules:下面的文本框內(nèi)容的后面加入mclmcrrt.liblibsum_prod.lib,如下圖所示6、代碼編輯及DLL調(diào)用(1)將前面生成的四個文件:libsum_prod.ctflibsum_prod.dllli
10、bsum_prod.hlibsum_prod.lib復(fù)制到VC工程所在目錄。(2)在VC6.0環(huán)境中,單擊菜單Project,選擇AddtoProject菜單項(xiàng),再單擊Files子菜單項(xiàng),出現(xiàn)如下圖對話框,將libsum_prod.h加入到當(dāng)前工程中。(3)當(dāng)用命令1生成的DLL函數(shù)時,在工程文件Test.cpp中添加以下代碼:#includeiostream.h/輸入輸出頭文件#includemclmcr.h/mxArray類型聲明#includelibsum_prod.h/DLL頭文件voiddisplay(constmxArray*in,constchar*name);intmain()
11、/初始化程序if(!mclInitializeApplication(NULL,0)fprintf(stderr,Couldnotinitializetheapplication.n);exit(1);/初始化庫if(!libsum_prodInitialize()fprintf(stderr,Couldnotinitializethelibrary.n);exit(1);/聲明DLL函數(shù)輸入輸出mxArray對象mxArray*X,*Y;mxArray*SUM=NULL,*PROD=NULL;/給輸入mxArray對象分配內(nèi)存X=mxCreateDoubleMatrix(2,3,mxREAL
12、);Y=mxCreateDoubleMatrix(2,3,mxREAL);doublex=1,2,3,4,5,6;doubley=7,8,9,10,11,12;/給輸入mxArray對象賦值memcpy(mxGetPr(X),x,6*sizeof(double);memcpy(mxGetPr(Y),y,6*sizeof(double);/調(diào)用DLL函數(shù),注意輸入與輸出的接口是不同的mlfSum_prod(2,%26amp;SUM,%26amp;PROD,X,Y);/顯示mxArray對象display(SUM,SUM);display(PROD,PROD);/釋放輸入輸出mxArray對象所占
13、用的內(nèi)存/注意輸出對象的內(nèi)存是在調(diào)用DLL函數(shù)過程中分配的mxDestroyArray(X);mxDestroyArray(Y);mxDestroyArray(SUM);mxDestroyArray(PROD);/關(guān)閉庫和程序libsum_prodTerminate();mclTerminateApplication();return0;/顯示矩陣函數(shù)voiddisplay(constmxArray*in,constchar*name)inti,j,r,c;double*data;data=mxGetPr(in);r=mxGetM(in);c=mxGetN(in);printf(%s=n,na
14、me);for(i=0;i%26lt;r;i+)printf(t);for(j=0;j%26lt;c;j+)printf(%4.2ft,dataj*r+i);printf(n);printf(n);該C+程序運(yùn)算結(jié)果如下圖所示(4)當(dāng)用命令2生成的DLL函數(shù)時,在工程文件Test.cpp中添加以下代碼:#includeiostream.h/輸入輸出頭文件#includemclmcr.h/mwArray類型聲明#includelibsum_prod.h/DLL頭文件voiddisplay(constdouble*data,constintr,constintc,constchar*name);i
15、ntmain()/初始化程序if(!mclInitializeApplication(NULL,0)fprintf(stderr,Couldnotinitializetheapplication.n);exit(1);/初始化庫if(!libsum_prodInitialize()fprintf(stderr,Couldnotinitializethelibrary.n);exit(1);/聲明DLL函數(shù)輸入輸出mwArray對象mwArrayX(2,3,mxDOUBLE_CLASS);mwArrayY(2,3,mxDOUBLE_CLASS);mwArraySUM,PROD;doublex=1
16、,2,3,4,5,6;doubley=7,8,9,10,11,12;double*sum,*prod;sum=newdouble6;prod=newdouble6;/給輸入mwArray對象賦值X.SetData(x,6);Y.SetData(y,6);/調(diào)用DLL函數(shù)sum_prod(2,SUM,PROD,X,Y);/取出輸出數(shù)據(jù)SUM.GetData(sum,6);PROD.GetData(prod,6);/顯示mwArray對象/std:cout%26lt;%26lt;SUM=%26lt;%26lt;std:endl%26lt;%26lt;SUM%26lt;%26lt;std:endl;
17、/std:cout%26lt;%26lt;PROD=%26lt;%26lt;std:endl%26lt;%26lt;PROD%26lt;%26lt;std:endl;display(sum,2,3,SUM);display(prod,2,3,PROD);deletesum;deleteprod;/關(guān)閉庫和程序libsum_prodTerminate();mclTerminateApplication();return0;/顯示矩陣函數(shù)voiddisplay(constdouble*data,constintr,constintc,constchar*name)inti,j;printf(%s=n,name);for(i=0;i%26lt;r;i+)printf(t);for(j=0;j%2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《風(fēng)景園林招投標(biāo)與概預(yù)算》試題A帶答案詳解(精練)
- 2023年上海市上海市普陀區(qū)真如鎮(zhèn)招聘社區(qū)工作者真題帶題目詳解
- 2024年山東華興機(jī)械集團(tuán)有限責(zé)任公司人員招聘筆試備考題庫含答案詳解(基礎(chǔ)題)
- 2025年河北省定州市輔警招聘考試試題題庫含答案詳解(b卷)
- 2025年K2學(xué)校STEM課程實(shí)施與素質(zhì)教育融合研究報告
- 統(tǒng)編版語文五年級上冊期末《列那狐的故事》導(dǎo)讀課課件
- 貧血指標(biāo)臨床解讀2025
- 2025年秦皇島市G1工業(yè)鍋爐司爐試題題庫
- 2025屆高考物理大一輪復(fù)習(xí)課件 第十一章 第65課時 專題強(qiáng)化:帶電粒子在立體空間中的運(yùn)動
- 網(wǎng)絡(luò)服務(wù)器配置與管理(微課版) 習(xí)題答案 張靚
- 2024年6月浙江高考?xì)v史真題及答案
- 公司與合作伙伴戰(zhàn)略合作協(xié)議簽訂流程備忘錄
- DG-TG08-12-2024 普通中小學(xué)建設(shè)標(biāo)準(zhǔn)
- 個體工商戶員工勞動合同模板
- 《特種設(shè)備操作人員安全培訓(xùn)》課件
- 齒科消毒知識培訓(xùn)課件
- 養(yǎng)老院園林綠化設(shè)計方案
- 室內(nèi)裝修施工圖設(shè)計合同模板
- 人工智能在安全生產(chǎn)信息化中的應(yīng)用探索
- 2025年行政執(zhí)法人員執(zhí)法資格考試必考題庫及答案(共232題)
- 銀行從業(yè)資格證考試題庫
評論
0/150
提交評論