| MATLAB與VisualC++結(jié)合的方法有多種,但其實用程度與范圍不同。常用的方法有: (1)將Matlab程序編譯成C/C++源文件并嵌入VC++;(2)在C/C++程序中利用Matlabengine調(diào)用Matlab函數(shù);(3)在C/C++程序中直接使用MatlabC/C++MathLibrary;(4)將.m文件編譯成*.dll文件嵌入到VC++的程序中?;趯嵱眯浴⒁子眯缘目紤],本文主要討論第四種方法。另外隨著Matlab版本的升級,原來的mathlibrary已經(jīng)并入了Compiler之中,是否是mathworks比較推崇DLL的方式呢?本文通過一個簡單的例子來說明Matlab和VC++混編的具體過程(環(huán)境為Matlab6.5&VC++6.0)。 1Matlab編譯環(huán)境的設置 為了能夠使用Matlab的Complier將*.m函數(shù)文件編譯為動態(tài)鏈接庫DLL,必須對Matlab的環(huán)境做出相應的配置。具體做法如下: 在Matlab的CommandWindow下輸入命令mbuild–setup,并根據(jù)Matlab的提示選擇合適的編譯器,筆者使用的是MicrosoftVisualC++.過程如下 >>mbuild-setup PleasechooseyourcompilerforbuildingstandaloneMATLABapplications: Wouldyoulikembuildtolocateinstalledcompilers[y]/n? Selectacompiler: [1]LccCversion2.4inD:\MATLAB6P5\sys\lcc [2]MicrosoftVisualC/C++version7.0inC:\ProgramFiles\MicrosoftVisualStudio.NET [3]MicrosoftVisualC/C++version6.0inD:\MicrosoftVisualStudio [0]None Compiler:3 Pleaseverifyyourchoices: Compiler:MicrosoftVisualC/C++6.0 Location:D:\MicrosoftVisualStudio Arethesecorrect?([y]/n): 然后,在CommandWindow中輸入命令cd(prefdir);mccsavepath;這是為了后面使用Matlab在VC++IDE中的Add-in作準備。然后輸入命令mex–setup,以類似的方法配置編譯器。至此,Matlab的配置完成。如有疑問,可以參閱Matlab的幫助MatlabCompiler\GettingStarted\Installationandconfiguration一節(jié)。 2創(chuàng)建動態(tài)鏈接庫(*.DLL) 創(chuàng)建動態(tài)鏈接庫主要有兩種方法:一種是使用Matlab為VC++IDE提供的Add-in。這種方法比較簡單,方便快捷,只要在VC++中創(chuàng)建工程的時候選擇MatlabProjectWizard,并且在接下來的Step1中的VisualMatlabApplicationType選擇SharedM-DLL就可以了。接下來就是添加*.m文件,進行編譯了。另一種方法就是使用Matlab的mcc命令將*.m文件編譯為動態(tài)鏈接庫(*.DLL)。因為Add-in也是調(diào)用Compiler的命令mcc進行編譯工作的,而且有時候這個Add-in還會出現(xiàn)不能使用的情況,因此這里主要討論使用mcc命令的方法。 關(guān)于mcc有很多參數(shù)可以使用,而且有多種用法,具體的可以參見Matlab的幫助。 這里我們使用命令mcc–Bcsglsharedlib:youlibnamefunction1funcion2…來創(chuàng)建我們所需要的動態(tài)鏈接庫DLL文件。其中參數(shù)-B表示使用的是BundleFiles作為參數(shù)csglsharedlib是-B的參數(shù),意思是生成使用Matlab圖形庫的C共享動態(tài)鏈接庫,youlibname是你想要生成的動態(tài)鏈接庫DLL的文件名,注意csglsharedlib與youlibname之間有一個冒號“:”連接,function1為你想要加入到動態(tài)鏈接庫DLL中的函數(shù)名,如果有多個函數(shù),各個函數(shù)名用空格隔開。 |
|
|