MATLAB 在線性代數、控制理論、訊號處理等領域極為強大。若能在 VC++ 中呼叫 MATLAB 函數庫,可大幅減少開發工作量、提升精度並善用 VC++ 介面優勢。本文詳細說明整合步驟。
專案屬性 → C/C++ → Preprocessor:
D:\MATLAB6P1\EXTERN\INCLUDE
D:\MATLAB6P1\EXTERN\INCLUDE\CPP
D:\MATLAB6P1\EXTERN\LIB
MSVC, MSWIND專案屬性 → Linker → Input → Ignore Specific Library:msvcrt.lib
#include "matlab.hpp"
#include "x.hpp" // 若有由 .m 編譯產生的 .cpp/.hpp
在 x.cpp 中加入 #include "StdAfx.h"
使用 mcc 指令:
mcc -t -L C x.mmcc -t -L Cpp x.mmcc -t -W lib:y -T link:lib x.m (y 為輸出庫名稱)#pragma comment(lib, "libmatlb.lib")
#pragma comment(lib, "libmx.lib")
#pragma comment(lib, "libmatpm.lib") // C++ 數學庫
double d[] = { 1, 2, 3, 4 };
mwArray A(2, 2, d); // 2x2 矩陣
mwArray arrVal, arrVec;
arrVec = eig(&arrVal, A); // 求特徵值與特徵向量
double* a = new double[4];
double* b = new double[4];
for (int i = 0; i < 4; i++) {
a[i] = *(mxGetPr(arrVal.GetData()) + i); // 特徵值
b[i] = *(mxGetPr(arrVec.GetData()) + i); // 特徵向量
}
透過上述設定,即可在 VC++ 專案中無縫呼叫 MATLAB 強大的數學運算功能,兼具高效能與開發效率。