我发现这段代码可以调用 Matlab 编译器,当从 Matlab 命令提示符调用该函数时它工作正常,我将此函数构建为 .Net 程序集,但每当我尝试在我的 C# 应用程序中使用它以构建一些 .m 文件时我得到一个例外,你认为我的问题在哪里?
Matlab代码:
function compileCode(mfile,dllName , dnetdir)
%% Create directories if needed
if (exist(dnetdir, 'dir') ~= 7)
mkdir(dnetdir);
end
%% Build .NET Assembly
eval(['mcc -N -d ''' dnetdir ''' -W ''dotnet:' dllName ',' ...
'' dllName ',0.0,private'' -T link:lib ''' mfile '''']);
end
C#代码:
var cmm = new compiler.MatlabCompiler();
MWCharArray x = new MWCharArray(@"C:\Users\ePezhman\Documents\MATLAB\Graph2D.m");
MWCharArray y = new MWCharArray("Graph");
MWCharArray z = new MWCharArray(@"C:\Matlab\dotnet");
cmm.compileCode(x,y,z);
例外:
... MWMCR::EvaluateFunction 错误 ... 'char' 类型的输入参数的未定义函数'mcc'。第 9 行 => compileCode.m 中的错误。
... Matlab M 代码堆栈跟踪 ... 在文件 C:\Users\ePezhman\AppData\Local\Temp\ePezhman\mcrCache8.0\compil0\compiler\compileCode.m,名称 compileCode,第 9 行。