MATLAB에서 clear mex
모든 MEX 파일을 메모리에서 언로드합니다 (잠기지 않은 경우). 이전 버전의 macOS에서는 간단히 clear mex
명령을 실행하여 MTL 파일을 다시 컴파일하고 MATLAB을 다시 시작하지 않고 수정 된 버전을 실행할 수있었습니다 . 더 이상 모하비에서는 불가능합니다.
예를 들어 다음과 같은 간단한 MEX 파일 ( get_data_pointer.c
)을 사용하십시오.
#include "mex.h"
void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] )
{
plhs[0] = mxCreateNumericMatrix(1, 1, mxUINT64_CLASS, mxREAL);
*(uint64_t*)mxGetData(plhs[0]) = (uint64_t)mxGetData(prhs[0]);
}
MEX 파일을 만들어 메모리에로드 할 수 있습니다.
mex get_data_pointer.c
get_data_pointer(0)
그것을 지우려면
clear mex
[~,mexfiles] = inmem
version -modules
inmem
실제로 더 MEX-파일 없음을 나타내는 빈 셀 배열이 메모리에로드되지만 반환 version -modules
(에서, 문서화 이 답변 여전히 방송) /Users/cris/matlab/get_data_pointer.mexmaci64
출력에. 그리고 MEX 파일 소스 코드를 변경하고 다시 컴파일하면 실제로 MEX 파일이 다시로드되지 않고 MATLAB을 종료 할 때까지 이전 버전이 계속 실행되고 있음을 알 수 있습니다.
macOS Mojave의 MATLAB R2017a에서 이것을보고 있습니다. High Sierra에서 동일한 MATLAB 버전에서는 문제가되지 않았습니다.
MATLAB이 다시 시작하지 않고 MEX 파일을 언로드하도록하려면 어떻게해야합니까?