matlab和vc混合編程綜述

matlab和vc混合編程綜述

ID:13086380

大小:433.00 KB

頁數(shù):21頁

時間:2018-07-20

matlab和vc混合編程綜述_第1頁
matlab和vc混合編程綜述_第2頁
matlab和vc混合編程綜述_第3頁
matlab和vc混合編程綜述_第4頁
matlab和vc混合編程綜述_第5頁
資源描述:

《matlab和vc混合編程綜述》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。

1、程序中使用MATLAB編譯產(chǎn)生的DLL(VS2005,MATLAB7.5,mwArray)??2007-12-1614:52:39??分類:?MatLab/Maple/Mat字號?訂閱from:?http://www.simwe.com/forum/thread-801187-1-1.html程序中使用MATLAB編譯產(chǎn)生的DLL(VS2005,MATLAB7.5,mwArray)最近有幾個帖子都在討論有關在C++程序中使用MATLAB編譯產(chǎn)生的動態(tài)鏈接庫DLL。本來想用原來帖子中給出的m代碼作為例子,無奈那段代

2、碼其實無法執(zhí)行。為了避免分散注意力,也為了更好地討論問題,于是決定還是另外新開一個主題,以簡單的例子,和大家一起討論如何在C++程序中使用matlab編譯產(chǎn)生的DLL。同時MATLAB最新版本R2007b剛剛發(fā)布不久,其中包含編譯器4.7版,有了一些新的特性,于是也借這個例子來驗證一下相關的技術有沒有發(fā)生大的變化。最近討論的問題是關于在C++程序中調(diào)用MATLAB編譯產(chǎn)生的動態(tài)鏈接庫。具體的問題是在調(diào)用DLL中函數(shù)時傳遞參數(shù)。我們知道,MATLAB可以把m代碼編譯成兩種DLL,分別是C語言接口和C++語言接口的D

3、LL。論壇上的問題是關于調(diào)用C++接口的DLL中的函數(shù),所以這里我們就以這種DLL為例來介紹。在C++接口的DLL中,函數(shù)的輸入、輸出參數(shù)都是mwArray對象。所以問題歸結(jié)為如何在C++程序中使用mwArray。這個問題本來可以只用一個簡單的C++程序來練習,而不需要MATLAB編譯的DLL。不過為了模擬實際情況,選擇以一個更為接近實際的m代碼作為例子。在這個例子中,輸入輸出都是矩陣,至于標量,它也是一個一行、一列的矩陣。實驗環(huán)境:Windows2003StdServerwithSP2(En),MATLABR2

4、007b,VisualStudio2005。MATLAB安裝路徑:h:MATLABR2007b。實驗內(nèi)容:把一個簡單的m代碼編譯成C++接口的DLL,然后在C++程序中調(diào)用。為了簡單起見,這里的C++程序是一個Win32Console程序,而不是Windows圖形界面的程序,不過不妨礙我們的討論。下面是這個例子用到的m代碼。它定義了一個名為myadd2的函數(shù):[Copytoclipboard]?[-]CODE:function[y,z]=myadd2(a,b)%dummyfunction,justtodemons

5、tratetheideay=a+b;z=a+2b;end首先把這個函數(shù)編譯成C++接口的DLL。為此,我們需要先設置MATLAB編譯器。具體做法是在MATLAB命令行執(zhí)行“mbuild-setup”。然后用下面這行命令把myadd2函數(shù)編譯成一個C++接口的DLL:[Copytoclipboard]?[-]CODE:mcc-Wcpplib:libmyadd2-Tlink:libmyadd2結(jié)果,我們將會得到包含libmyadd2.dll,libmyadd2.ctf,libmyadd2.h,libmyadd2.li

6、b等在內(nèi)的一些文件。接下來我們只需要這四個文件。請注意:在MATLABR2007b之前,這些文件都會在和編譯的m代碼所在的目錄中,而在MATLABR2007b,缺省情況下這些文件會在DocumentsandSettings中用戶的MyDocuments目錄中。此時,打開libmyadd2.h看看,在文件的最下面我們可以發(fā)現(xiàn)C++接口的函數(shù)定義。仔細觀察過后,我們可以發(fā)現(xiàn),這個接口函數(shù)的參數(shù)是按照這樣的順序定義的:輸出參數(shù)的個數(shù)、輸出參數(shù)、以及輸入?yún)?shù)。然后在VS2005中創(chuàng)建一個Win32Console的VC++

7、工程,我在測試時取名為testmyadd2_r2007b。把以上四個文件拷貝到VC++工程的源代碼所在目錄。接下來設置VC++,讓它能找到MATLAB接口函數(shù)的定義及連接庫函數(shù)??梢杂袃煞N設置方式:一種是改VS2005中關于VC++的設置,這樣的好處是每個新的工程都能自動獲得這個設定;而另一種是只改當前工程的設置,也就是設置只對該工程有效。這里用后一種方式。在VS2005中打開工程testmyadd2_r2007b,選擇菜單“Project-->Properties,在出來的對話框上,把MATLAB提供的incl

8、ude路徑加到VC++的頭文件搜索路徑。如圖所示:然后把相應的lib所在目錄加到linker的額外搜索路徑上。如圖所示:??接下來,告訴VC++,我們的這個程序需要連接到另外兩個額外的庫函數(shù):libmyadd2.lib和mclmcrrt.lib。中間用空格隔開。如圖所示:最后則是程序代碼。這個程序只有一個main函數(shù),其完整代碼附在下面給大家參考。歡迎大家拍磚。謝謝!CO

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。