版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、1 、 mcc4.0 編譯環(huán)境設(shè)置在桌面上右鍵單擊“我的電腦”圖標(biāo)出現(xiàn)以下菜單單擊“屬性”菜單項,出現(xiàn)“系統(tǒng)特性”對話框,單擊“高級”選項卡,如下圖所示在上圖中,單擊“環(huán)境變量”按鈕,出現(xiàn)“環(huán)境變量”對話框, 添加系統(tǒng)變量 matlab 值為 C:MATLAB7 即 matlab7.0 的安裝路徑,如下圖所示在環(huán)境變量 path 中加入 C:MATLAB7binwin32 ,如下圖所示按“確定”完成設(shè)置后, 重啟計算機或注銷當(dāng)前用戶 ,即可應(yīng)用新設(shè)置。2 、 Matlab7.0 編譯器設(shè)置(1) mex 命令設(shè)置 (a) 運行 Matlab ,在 Matlab 的命令窗口 (Command W
2、indow) 鍵入“ mex -setup ”命令后,按回車鍵,安裝 Matlab 編譯器;(b) 命令窗口出現(xiàn)如下提示:Please choose your compiler for building external interface (MEX) files:Would you like mex to locate installed compilers y/n?此時鍵入 ”y” ,按回車;(c) 命令窗口出現(xiàn)如下提示:Please choose your compiler for building external interface (MEX) files:Would you lik
3、e mex to locate installed compilers y/n? ySelect a compiler:1 Digital Visual Fortran version 6.0 in C:Program FilesMicrosoft Visual Studio2 Lcc C version 2.4 in C:MATLAB6P5syslcc3 Microsoft Visual C/C+ version 6.0 in C:Program FilesMicrosoft Visual Studio0 None此時鍵入 ” 3” ,按回車 ;選擇 Microsoft Visual C+6
4、.0 的編譯器(d) 命令窗口出現(xiàn)如下提示:Please verify your choices:Compiler: Microsoft Visual C/C+ 6.0Location: C:Program FilesMicrosoft Visual StudioAre these correct?(y/n):此時鍵入 ”y” ,按回車 ;確認(rèn)選擇 Microsoft Visual C+6.0 的編譯器(2) mbuild 命令設(shè)置 (a) 運行 Matlab ,在 Matlab 的命令窗口 (Command Window) 鍵入“ mbuild -setup ”命令后,按回車鍵,安裝 Mat
5、lab 編譯器;(b) 命令窗口出現(xiàn)如下提示:Please choose your compiler for building standalone MATLAB applications:Would you like mbuild to locate installed compilers y/n?此時鍵入 ”y” ,按回車 ;(c) 命令窗口出現(xiàn)如下提示:1 Lcc C version 2.4 in C:MATLAB6P5syslcc2 Microsoft Visual C/C+ version 6.0 in C:Program FilesMicrosoft Visual Studio0
6、None此時鍵入 ” 2” ,按回車 ;選擇 Microsoft Visual C+6.0 的編譯器(d) 命令窗口出現(xiàn)如下提示:Please verify your choices:Compiler: Microsoft Visual C/C+ 6.0Location: C:Program FilesMicrosoft Visual StudioAre these correct?(y/n):此時鍵入 ”y” ,按回車 ,確認(rèn)選擇 Microsoft Visual C+6.0 的編譯器,編譯器設(shè)置完成。3 、編寫 Matlab 函數(shù)函數(shù)文件 sum_prod.m ,內(nèi)容如下:function
7、 sum,prod = sum_prod(p1,p2)sum = p1+p2; % p1 與 p2 的和prod = p1.*p2; % p1 與 p2 的點乘該函數(shù)完成的是矩陣的求和與點乘的功能,下面將介紹把該代碼轉(zhuǎn)換成 VC+ 環(huán)境可用的代碼的方法。4 、將 Matlab 函數(shù)轉(zhuǎn)成 DLL 函數(shù)在 Matlab7.0 的 Command Window 下輸入命令 :命令 1 : mcc -W lib:libsum_prod -T link:lib sum_prod.m或命令 2 : mcc -W cpplib:libsum_prod -T link:lib sum_prod.m生成動態(tài)鏈接
8、庫 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) 對 VC 6.0 ,進行以下設(shè)置單擊菜單 Tools ,出現(xiàn)如下菜單單擊 Options 菜單項,出現(xiàn)
9、 Options 對話框,選擇 Directories 標(biāo)簽,在 include files 里面加入:C:MATLAB7EXTERNINCLUDE如下圖所示在 Library files 里面加入:C:MATLAB7EXTERNLIBWIN32MICROSOFTMSVC60如下圖所示(3) 對該工程,進行以下設(shè)置單擊菜單 Project ,出現(xiàn)如下菜單單擊 Setting 菜單項,出現(xiàn) Project Setting 對話框,選擇 Link 標(biāo)簽,在 Object/library modules: 下面的文本框內(nèi)容的后面加入 mclmcrrt.lib libsum_prod.lib ,如下圖
10、所示6 、代碼編輯及 DLL 調(diào)用(1) 將前面生成的四個文件:libsum_prod.ctflibsum_prod.dlllibsum_prod.hlibsum_prod.lib復(fù)制到 VC 工程所在目錄。(2) 在 VC 6.0 環(huán)境中, 單擊菜單 Project , 選擇 Add to Project 菜單項,再單擊 Files 子菜單項,出現(xiàn)如下圖對話框,將 libsum_prod.h 加入到當(dāng)前工程中。(3) 當(dāng)用命令 1 生成的 DLL 函數(shù)時 ,在工程文件 Test.cpp 中添加以下代碼:#include "iostream.h" / 輸入輸出頭文件#inc
11、lude "mclmcr.h" / mxArray 類型聲明#include "libsum_prod.h" / DLL 頭文件void display(const mxArray* in, const char* name);int main()/ 初始化程序if( ! mclInitializeApplication(NULL,0) )fprintf(stderr, "Could not initialize the application.n");exit(1);/ 初始化庫if (! libsum_prodInitialize
12、() )fprintf(stderr,"Could not initialize the library.n");exit(1);/ 聲明 DLL 函數(shù)輸入輸出 mxArray 對象mxArray *X,*Y;mxArray *SUM=NULL,*PROD=NULL;/ 給輸入 mxArray 對象分配內(nèi)存X = mxCreateDoubleMatrix(2,3,mxREAL);Y = mxCreateDoubleMatrix(2,3,mxREAL);double x = 1,2,3,4,5,6;double y = 7,8,9,10,11,12;/ 給輸入 mxArray
13、 對象賦值memcpy(mxGetPr(X),x,6*sizeof(double);memcpy(mxGetPr(Y),y,6*sizeof(double);/ 調(diào)用 DLL 函數(shù),注意輸入與輸出的接口是不同的mlfSum_prod(2,&SUM,&PROD,X,Y) ;/ 顯示 mxArray 對象display(SUM,"SUM");display(PROD,"PROD");/ 釋放輸入輸出 mxArray 對象所占用的內(nèi)存/ 注意輸出對象的內(nèi)存是在調(diào)用 DLL 函數(shù)過程中分配的mxDestroyArray(X);mxDestroyA
14、rray(Y);mxDestroyArray(SUM);mxDestroyArray(PROD);/ 關(guān)閉庫和程序libsum_prodTerminate() ;mclTerminateApplication() ;return 0;/ 顯示矩陣函數(shù)void display(const mxArray* in, const char* name)int i,j,r,c;double *data;data = mxGetPr(in);r = mxGetM(in);c = mxGetN(in);printf("%s = n",name);for(i=0;i<r;i+)pr
15、intf("t");for(j=0;j<c;j+)printf("% 4.2f t",dataj*r+i);printf("n");printf("n");該 C+ 程序運算結(jié)果如下圖所示(4) 當(dāng)用命令 2 生成的 DLL 函數(shù)時 ,在工程文件 Test.cpp 中添加以下代碼:#include "iostream.h" / 輸入輸出頭文件#include "mclmcr.h" / mwArray 類型聲明#include "libsum_prod.h&qu
16、ot; / DLL 頭文件void display(const double* data, const int r, const int c, const char* name);int main()/ 初始化程序if( ! mclInitializeApplication(NULL,0) )fprintf(stderr, "Could not initialize the application.n");exit(1);/ 初始化庫if (! libsum_prodInitialize() )fprintf(stderr,"Could not initializ
17、e the library.n");exit(1);/ 聲明 DLL 函數(shù)輸入輸出 mwArray 對象mwArray X(2,3,mxDOUBLE_CLASS);mwArray Y(2,3,mxDOUBLE_CLASS);mwArray SUM,PROD;double x = 1,2,3,4,5,6;double y = 7,8,9,10,11,12;double *sum,*prod;sum = new double6;prod = new double6;/ 給輸入 mwArray 對象賦值X.SetData(x,6);Y.SetData(y,6);/ 調(diào)用 DLL 函數(shù)sum
18、_prod(2,SUM,PROD,X,Y) ;/ 取出輸出數(shù)據(jù)SUM.GetData(sum,6);PROD.GetData(prod,6);/ 顯示 mwArray 對象/ std:cout << "SUM = " << std:endl << SUM << std:endl;/ std:cout << "PROD = " << std:endl << PROD << std:endl;display(sum,2,3,"SUM");display(prod,2,3,"PROD");delete sum;delete pr
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 領(lǐng)導(dǎo)力與商務(wù)禮儀培訓(xùn)
- 《跨接導(dǎo)壓技術(shù)創(chuàng)新》課件
- 提升營收的多元化策略計劃
- 地質(zhì)勘查技術(shù)服務(wù)行業(yè)相關(guān)投資計劃提議
- 財務(wù)科預(yù)算與成本控制計劃
- 丙型肝炎抗體檢測試劑盒相關(guān)行業(yè)投資規(guī)劃報告范本
- 寶石、玉石礦相關(guān)行業(yè)投資方案范本
- 《液壓與氣動》課件 2過濾器
- 日用織物制品相關(guān)行業(yè)投資方案
- 《信客公開》課件
- 2022年國家糧食和物資儲備局直屬聯(lián)系單位招聘考試試卷及答案解析
- 市政公用工程安全文明施工監(jiān)理實施細(xì)則樣本
- 采購部經(jīng)理年度工作總結(jié)
- 預(yù)防網(wǎng)絡(luò)成癮心理課課件
- 航道工程學(xué)-航道疏浚分解課件
- 壓力容器焊接技術(shù)培訓(xùn)
- 某新材料科技公司《呆貨 次品 退貨及客戶罰款處理規(guī)定》
- 2024年1月份21起典型事故案例匯總及2024年節(jié)前安全檢查與春節(jié)安全專題培訓(xùn)
- 城市排水系統(tǒng)雨污分流改造
- 《小腸解剖及臨床》課件
- 高端醫(yī)療器械招商方案
評論
0/150
提交評論