컴파일 MATLAB 코드와 같은 :.
function [out1, out2] = epidemic(in1, in2, in3)
%[
...
%]
int main(int argc, char** argv)
{
// Load compiled code produced by mcc
HMCRInstance* hInst = loadByteCodeProducedByMccFromResources();
// Similar to have wrote in matlab "epidemic(argv[0], argv[1], ...)"
// 1) Without asking for any argument output
// 2) Argument inputs are passed as strings
int errorCode = mclFevalFromExeArg(hInst, "epidemic", argc, argv);
return errorCode; // only indicates if call to 'mclFEvalFromExeArg'
// succeded, it does not relate to out1, out2 at all.
}
NB :는 매트랩 다음 의사 C 코드 어떻게 든 생산하고 .exe를 그것을 컴파일 (mcc -m epidemeic.m
를) 독립하고, 당신이 내 고객 센터에 의해 생성 된 정확한 코드를 보려면 사용 mcc -W main -T codegen epidemic.m
그래서 독립형으로 직접 컴파일하면 Matlab 함수의 출력으로 작업 할 수 없습니다. 당신은 epidemic
의 출력 인수와 함께 놀러해야하는 경우 중 하나
[간단한 솔루션]가 disp
(NB를 사용하여 콘솔을 쉘 파일에 출력을 저장하거나 표시 고려 : 당신은 당신의하는 .m에 isdeployed
을 사용할 수 있습니다 MATLAB 또는 컴파일 된 코드에서 실행 중인지 확인하는 파일). 당신이 공유 라이브러리에 코드를 컴파일 할 때, mcc
는 DLL을 생성합니다 :
는 [고급 솔루션] (mcc -m epidemeic.m
)
NB 공유 라이브러리 (mcc -l epidemic.m
) 대신 독립에 코드를 컴파일 고려 그 다음 함수 보냅니다
이
extern LIB_epidemeic_C_API
bool MW_CALL_CONV mlxEpidemic(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]);
nrhs/prhs
입력 인수 및 수 있습니다 그들의 값 (mxArray
유형). 그리고 nlhs/plhs
은 epidemic
을 호출 할 때 필요로하는 출력 인수입니다. mxArray와 동등한 C 기본 유형 사이의 마샬링을 수행 할 수 있습니다.
편집 당신이 epidemic
값의 벡터를 반환하는 표시로
,이 같은 독립형에서 그들을 표시 할 수 있습니다
function [output] = epidemic(v1, v2, v3)
%[
% When called from system cmd line, v1, v2, v3 are passed
% as string. Here is how to convert them to expected type if required
if (ischar(v1)), v1 = str2double(v1); end
if (ischar(v2), v2 = str2double(v2); end
if (ischar(v3)), v3 = str2double(v3); end
...
output = ...;
...
if (isdeployed())
disp(output);
end
%]
lib를 만드는 데 문제가있어서 실행 파일의 해결책을 결정했습니다. 텍스트 파일에 출력을 썼습니다. 입력 사건에 대해 어떻게해야합니까? MATLAB 함수의 입력 인수로 취할 수 있습니까? –
또 다시, 네 ... 시스템 콘솔'epidemic.exe riri fifi loulou'에 글을 쓰면 eaxctly와 똑같습니다. matlab promt'epidemic ('riri', 'fifi', 'loulou')' ... 모든 인수는 문자열로 전달됩니다. 필요한 경우 함수 시작 부분에서 'ischar'을 사용하여 변환 할 수 있습니다 ... 내 대답은 업데이트를 참조하십시오. – CitizenInsane