我想在Matlab中構建一個包含m文件和C++(cpp)源文件的源代碼包。如何通過Matlab使用C++編譯器Mex編譯工具
源文件夾中有一個簡單的MATLAB腳本編寫一個文件夾中的所有cpp文件:
function compileDir_simple(Cdir)
if nargin<1
Cdir=pwd;
end
files = dir(fullfile(Cdir,'*.cpp'));
oldDir=pwd;
cd(Cdir);
for j=1:length(files)
try
cm = sprintf('mex -largeArrayDims %s',files(j).name);
disp(cm);
eval(cm);
catch
disp(lasterr);
disp('IGNORE if the file is a C++ file which is not a mex file (ie without a mexFunction inside)');
end
end
cd(oldDir);
內部,它採用 「MEX -largeArrayDims」。但是,我的問題是,當我評估該語句時,Matlab試圖通過MATLAB本身包含的C編譯器來構建所選文件。當我打電話MEX -SETUP我看到:
MEX -SETUP 請選擇您的編譯器來編譯外部接口(MEX)文件:
Would you like mex to locate installed compilers [y]/n? y
Select a compiler:
[1] Lcc-win32 C 2.4.1 in D:\MATLAB\R2010a\sys\lcc
[0] None
Compiler:
我安裝流血C++編譯器並添加了它的bin文件夾(到Windows環境變量,但是我仍然看不到我的C++編譯器在已安裝的編譯器列表中,只有Lcc-win32出現,這是合適的,指出這是我第一次編譯mex文件。
我不想安裝Visual Studio C++(更多下載時間+內存請求),並找到一種更簡單快捷的方式來編譯C++,唯一的其他C++編譯器是Windows C++。答案是正確的,它不是MATLAB支持的編譯器 – fercis