定標(biāo)數(shù)據(jù)處理之vs2010對(duì)matlab的調(diào)用_第1頁(yè)
定標(biāo)數(shù)據(jù)處理之vs2010對(duì)matlab的調(diào)用_第2頁(yè)
定標(biāo)數(shù)據(jù)處理之vs2010對(duì)matlab的調(diào)用_第3頁(yè)
定標(biāo)數(shù)據(jù)處理之vs2010對(duì)matlab的調(diào)用_第4頁(yè)
定標(biāo)數(shù)據(jù)處理之vs2010對(duì)matlab的調(diào)用_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Vs2010調(diào)用matlab2012a主要的實(shí)驗(yàn)任務(wù)是將,matlab編寫(xiě)的定標(biāo)程序轉(zhuǎn)換成可以獨(dú)立運(yùn)行的.exe文件和供vs2010調(diào)用的c++動(dòng)態(tài)鏈接庫(kù)。測(cè)試,經(jīng)過(guò)轉(zhuǎn)換過(guò)后能否提高程序的運(yùn)行時(shí)間。實(shí)驗(yàn)的操作環(huán)境:vs2010中文版,matlab2012a,win7,64位環(huán)境的配置:首先在matlab2012a中輸入mbuild-setup,如下:接著根據(jù)操作分別輸入:y,1,y;最終結(jié)果如下:到此為止,matlab里的編譯器配置已經(jīng)完成,本例中選擇的是vs2010.需要注意的是:不是所有的matlab版本都可以調(diào)用任意的vs版本,matlab2010b以后的才可以調(diào)用vs2010.接下來(lái),如果,我們是要生成.exe程序,我們可以直接使用mcc–m完成操作,在matlab的busy結(jié)束后,我們可以在路徑下看到生成的.exe程序。如果,我們需要將.m文件編譯成供vs2010調(diào)用的動(dòng)態(tài)鏈接庫(kù),我們需要用mcc-W將matlab編寫(xiě)的.m文件編譯成c++語(yǔ)言。注意:在matlab中,mcc的編譯只能夠用于function函數(shù)。所以,我們?cè)诓僮髦?,要先將目?biāo)寫(xiě)成函數(shù)的.m文件形式。下面,我將以一個(gè)加法器的例子詳細(xì)講述操作的整個(gè)過(guò)程:先編寫(xiě)function函數(shù):function[c]=add(a,b)c=a+b;return;end編譯:生成.exe文件

mcc-madd在路徑下會(huì)出現(xiàn)一下的圖標(biāo):其中add.exe就是我們需要的文件。直接運(yùn)行它就可以了。本例是示范作用,運(yùn)行時(shí)會(huì)提示有錯(cuò)誤的,具體的可以使用寫(xiě)好的.m文件,編譯好,就可以使用了。生成供vs2010調(diào)用的動(dòng)態(tài)鏈接庫(kù):這里有兩條指令:mcc-Wcpplib:add-Tlink:libadd和mcc-Wlib:add-Tlink:libadd第一條是編譯生成c++動(dòng)態(tài)鏈接庫(kù)第二條是編譯生成c動(dòng)態(tài)鏈接庫(kù)式中cpplib:add中的add是編譯后文件的名稱(chēng),link:lib后的add是要編譯的.m文件。編譯結(jié)束后,結(jié)果如下其中.lib是動(dòng)態(tài)鏈接庫(kù),.h是頭文件,這兩個(gè)文件加上.dll是我們?cè)趘s2010里需要使用的。最新推出的matlab2013b由于編譯器沒(méi)有破解完全,操作時(shí)會(huì)出現(xiàn)一下的錯(cuò)誤:ErrorusingmccTestcheckoutoffeature'Compiler'failed.所以,我們盡量不要用matlab2013b來(lái)完成操作在matlab里完成操作后,我們?cè)趤?lái)設(shè)置一下vs2010的環(huán)境,在vs2010里新建win32控制臺(tái)程序,選擇無(wú)頭文件,其他默認(rèn)設(shè)置,進(jìn)入解決方案后,在項(xiàng)目add點(diǎn)擊右鍵,添加,新建項(xiàng),選擇c++文件(.cpp),文件名可以設(shè)置為main,接下來(lái)編寫(xiě)程序#include<iostream>#include”add.h”usingnamespacestd;intmain(){ if(addInitialize()) { cout<<"sucess!"<<endl; } else { cout<<"fail!"<<endl; return(0); } mwArraya(2,3,mxDOUBLE_CLASS); mwArrayb(2,3,mxDOUBLE_CLASS); mwArrayc(2,3,mxDOUBLE_CLASS); doublex[]={1,2,3,4,5,6}; doubley[]={7,8,9,10,11,12}; double*sum=newdouble[6]; a.SetData(x,6); b.SetData(y,6); add(1,c,a,b); c.GetData(sum,6); for(inti=0;i<2;i++) { for(intj=0;j<3;j++) { cout<<sum[j*2+i]<<""; } cout<<endl; } cout<<"itissuccessful!!!"<<endl; return(0);}在程序中添加的頭文件#include<iostream>#include”add.h”前者是輸入、輸出流頭文件,后者是我們?cè)趍atlab中生成的頭文件。我們可以打開(kāi)add.h,可以看到里面定義了我們需要的addInitialize()和addTermitate(),以及externLIB_add_CPP_APIvoidMW_CALL_CONVadd(intnargout,mwArray&c,constmwArray&a,constmwArray&b);這三個(gè)都是我們?cè)趍ain函數(shù)中經(jīng)常要用到的。mxArray是我們matlab矩陣與vs2010的數(shù)據(jù)接口,具體的可以參考劉維的《精通matlab與c/c++混合編程設(shè)計(jì)》,網(wǎng)上有電子版,不建議買(mǎi)書(shū),里面的環(huán)境還是matlab7.0和vc6,已經(jīng)的實(shí)例基本上都不能用了,只能看看原理。注意:兩個(gè)頭文件,一個(gè)是〈〉另一個(gè)是“”,這個(gè)區(qū)別我暫時(shí)也不是很清楚,但是若使用#include”add.h”,會(huì)出現(xiàn)錯(cuò)誤:這些都完成以后,配置一下vs2010,解決方案資源管理器——(項(xiàng)目)add——右鍵——屬性點(diǎn)擊鏈接器——常規(guī)——附加庫(kù)目錄,添加C:\ProgramFiles\MATLAB\R2012a\extern\lib\win64\microsoftE:\matlab與vc的混合編程\add\add前面一個(gè)是matlab自己的動(dòng)態(tài)鏈接庫(kù),后面一個(gè)是自己的路徑;對(duì)于32位機(jī),我們第一項(xiàng)可以改為C:\ProgramFiles\MATLAB\R2012a\extern\lib\win32\microsoft在鏈接器——輸入——附加依賴(lài)項(xiàng),添加add.libmclmcrrt.libmclmcr.lib其中第一項(xiàng)是我們自己生成的,后面兩者是matlab自帶的,我們?cè)赼dd中其實(shí)用到了。由于。我們使用的是64位機(jī),我們需要打開(kāi)配置管理器,點(diǎn)擊新建,在第一個(gè)下拉框中選擇x6432位機(jī)可以默認(rèn)設(shè)置。接下來(lái)就是編譯了,我們按下F5,或者圖標(biāo),出現(xiàn)了下面的錯(cuò)誤:“??add.exe”?à:已°?加¨?載?“??C:\ProgramFiles\MATLAB\R2012a\bin\win64\libmwrookfastbp.dll”?à,ê?CannotfindoropenthePDBfile“??add.exe”?à:已°?加¨?載?“??C:\ProgramFiles\MATLAB\R2012a\bin\win64\libmwspqr.dll”?à,ê?CannotfindoropenthePDBfile程¨?序¨°“??[2452]add.exe:本à?機(jī)¨2”?à已°?退a?出?,ê?返¤|ì回?值|ì為a0(0x0)。?ê只是摘錄一部分,原來(lái)我們應(yīng)該是要按下crtl+F5就可以了,或者這個(gè)鍵,這個(gè)鍵在原來(lái)的工具框中式?jīng)]有的,我們可以把鼠標(biāo)按到圖示向下圖標(biāo)處,出現(xiàn),點(diǎn)擊以后,選擇自定義,出現(xiàn)選擇工具欄中的生成菜單——添加命令——類(lèi)別中選擇調(diào)試——選擇開(kāi)始執(zhí)行(不調(diào)試)在確定,就可以了,在工具欄中就會(huì)出現(xiàn)圖標(biāo)了。運(yùn)行的結(jié)果:至

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論