Matlab 컴파일러를 호출하기 위해이 코드를 발견했습니다.이 함수를 Matlab 명령 프롬프트에서 호출하면 올바르게 작동하지만이 함수를 .NET 어셈블리로 빌드 할 때마다 사용할 수 있습니다. 내 C# 응용 프로그램에서 몇 가지 .m 파일을 만들려면 예외가 발생합니다. 내 문제는 어디에서 생각합니까?C# 응용 프로그램 내부에서 Matlab 컴파일러를 호출하면 예외가 발생합니다.
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'유형의 인수를 입력하십시오. 줄에서 => compileCode.m 오류 9.
... matlab에 M 코드 스택 추적 ... 파일 C에서 : \ 사용자 \ ePezhman \의 AppData 지역 \ 온도 \ \ ePezhman \ mcrCache8.0 \ compil0 \ 컴파일러 \의 compileCode.m, 이름 compileCode, 라인 (9)
그것은 것없이 다른 코드를 컴파일러 수있는 독립 실행 형 프로그램을 만들 수 있기 때문에, 제품에 대한 라이센스를 구입의 전체 목적을 물리 칠 것, 그것에 대해 생각 C#에서 직접 명령을 호출하는 것이 훨씬 쉽습니다. 'Process.Start()'사용하기. –