主要通過
mex
將matlab代碼編譯成C/C++動(dòng)態(tài)鏈接庫(kù)(dll)
- 編寫matlab函數(shù)
- 設(shè)置編譯器
mex -setup
- 編譯matlab代碼
mcc -C -W cpplib:multiTen -T link:lib multiTen.m
- 配置動(dòng)態(tài)鏈接庫(kù)
注意,ctf文件也要拷入到項(xiàng)目中勇劣,否則會(huì)出現(xiàn)初始化失敗松忍,程序崩潰現(xiàn)象 - 代碼調(diào)用
%matlab
function [ output_args ] = multiTen()
num=100;
output_args=num*10;
end
//c++
#include<iostream>
#include"multiTen.h"
using namespace std;
int main()
{
bool f=multiTenInitialize();
cout << f << endl;
mwArray res;
multiTen(1, res);
cout << res << endl;
cin.get();
return 0;
}
-
結(jié)果
運(yùn)行結(jié)果
存在的問題
在vs2015中,生成解決方案后择克,執(zhí)行程序會(huì)發(fā)生內(nèi)存沖突問題
解決方案
用vs2015生成exe文件后恬总,在命令行中運(yùn)行,不會(huì)導(dǎo)致程序崩潰肚邢,目前原因不知道壹堰,可能是vs和matlab版本問題
參考鏈接