找到Matlab下的MCRInstaller,雙擊MCRInstaller編譯器,運行安裝。
html
採用mbuild進行編譯語言設定ios
>> mbuild -setup
MBUILD configured to use 'Microsoft Visual C++ 2015 Professional (C)' for C language compilation.
To choose a different language, select one from the following:
mex -setup C++ -client MBUILD
mex -setup FORTRAN -client MBUILD
選擇 mex -setup C++ -client MBUILD ,即C++語言進行設置,獲得以下結果:web
MBUILD configured to use 'Microsoft Visual C++ 2015 Professional' for C++ language compilation.
此時,用戶能夠採用Matlab生成exe文件,獲得exe文件後,能夠獨立於Matlab運行。函數
輸入以下代碼:visual-studio
mcc -m untitled.m
直到結束爲止,則生成exe文件。測試
開始的環境是win10 64、Matlab 2016b、VS 2015,死活不行呀,總是報引起的異常: 0xC0000005: 讀取位置 0x0000000000000008 時發生訪問衝突。最後不得已將VS2015換成了VS2013,就能夠了^——^還要注意的是VS的編譯平臺要設置爲64位的(個人Matlab爲64bit)
https://cn.mathworks.com/support/sysreq/previous_releases.htmlui
dll文件又稱「應用程序擴展」,是軟文件類型。spa
簡單的加法運算.net
function [c]=add(a,b)
c=a+b;
return ;
end
Matlab生成dll文件:code
mcc -W cpplib:add -T link:lib add.m
生成了.dll、.h和.lib後綴的3個文件
或者:使用deploytool(參考文獻3)
1:在項目屬性中的包含目錄添加「Matlab安裝目錄\extern\include;」
2:在項目屬性中的庫目錄添加「Matlab安裝目錄\extern\include\lib\win64\microsoft;
添加以下:
add.lib %加法器函數庫文件
mclmcrrt.lib %VS 自帶庫文件
mclmcr.lib %VS 自帶庫文件
在項目頭文件中加載add.dll和add.h文件,資源文件加載add.lib
VS測試代碼:
#include<iostream>
#include"add.h"
#include"mclmcrrt.h"
#include"mclcppclass.h"
#include <stdio.h>
using namespace std;
void main()
{
if (addInitialize()) {
//system("pause");
printf("welcome!!!\n");
}
else {
//system("pause");
printf("fail\n");
}
mwArray a(1, 1, mxDOUBLE_CLASS);//賦值
a(1, 1) = 1;
mwArray b(1, 1, mxDOUBLE_CLASS);
b(1, 1) = 1;
mwArray c(1, 1, mxDOUBLE_CLASS);
add(1, c, a, b);
cout << c(1, 1) << endl;
addTerminate(); //終止函數lib
mclTerminateApplication(); //終止MCR
}
#include "vs_add.h"
#include <stdio.h>
float add(float x, float y){
return x + y;
}
vs_add.h
#ifndef VS_ADD_H
#define VS_ADD_H
/*check if the compiler is of C++*/
#ifdef __cplusplus
extern "C"
{
#endif
__declspec(dllexport) float add(float x, float y);
#ifdef __cplusplus
}
#endif
#endif
將獲得的dll文件,vs_add.h文件複製到Matlab工做路徑。
loadlibrary('vs2013_matlab2016b.dll','vs_add.h');
%libfunctions ysw_VS2010_MATLAB2012B -full
m=calllib('vs2013_matlab2016b','vs_add',1.1,2.1)
unloadlibrary('vs2013_matlab2016b')
參考文獻:
http://www.cnblogs.com/newpanderking/articles/4057977.html
Matlab GUI入門與實戰
http://blog.csdn.net/u013920434/article/details/52077788