VisualStudio與matlab2016的相互配置 使用c++調用m文件或matlab引擎

Matlab配置visualstudio編譯器

向Matlab中輸入mex -setup -v命令,並如下圖所示進入註冊表修改相應部分使相應的“否”變成“是”。

 

  • Microsoft\VisualStudio\SxS\VS7:Visual studio的安裝路徑
  • Microsoft\VisualStudio\SxS\VC7:Visual studio的安裝路徑下的VC目錄
  • Microsoft\Microsoft SDKs\Windows\v8.0:Microsoft SDKs的v8.0 目錄
  • VS110COMNTOOLS:Visual studio的安裝路徑下的Common7\Tools\目錄
其中,VS110COMNTOOLS是環境變量,可以在:我的電腦-->屬性-->高級系統設置-->環境變量-->系統變量中修改或添加:
 
Win+R打開運行窗口,輸入regedit命令打開註冊表編輯器

2.VS配置matlab

 

libmx.lib
libmat.lib
libeng.lib
libmex.lib
mclmcrrt.lib

mclmcr.lib

+m文件生成的lib

注意:與自己電腦系統相對應的bin路徑還需要加入到系統環境變量中,我的電腦是D:\MATLAB\R2014a\bin\win64,如下圖所示:

另外一定要設置和自己電腦位數相同的平臺配置——64位系統要把debug平臺改爲64位。

3.c++調用matlab引擎

#include"engine.h"

Engine * m_ep;

4.c++調用m文件

Matlab中輸入deploytool命令,使用Library Compiler,將m文件寫成函數形式使用package編譯。將dll,lib文件都放到debug文件夾中,頭文件添加到工程中。

注意:m文件必須爲函數且輸入輸出都有必須有賦值,不然會出現閃退現象。

 

以下是調用函數DrawDiamond的代碼:

      

 

double a=1;
if( DrawDiamondInitialize())    //初始化DrawDiamond的lib調用,初始化可放在Frame的構造函數中使得框架在創建時就使其初始化
{
mwArray  mw1(1,1,mxDOUBLE_CLASS,mxREAL);      //mw1爲1行一列的矩陣
mw1.SetData(&a,1);    //將a賦給mw1
mwArray  mw2(1,1,mxDOUBLE_CLASS,mxREAL);
DrawDiamond(1,mw2,mw1);

 

DrawDiamondTerminate();   //終止DrawDiamond的lib調用

        }

注:if中的條件DrawDiamondInitialize()必須要先調用才能調用編譯的函數。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章