MATLAB में, clear mex सभी MEX- फ़ाइलों को मेमोरी से अनलोड करता है (जब तक कि वे लॉक न हों)। MacOS के पिछले संस्करणों के तहत, मैं एक MEX- फाइल को फिर से संकलित करने और MATLAB को पुनरारंभ किए बिना संशोधित संस्करण चलाने में सक्षम था, बस एक clear mexकमांड जारी करके । यह Mojave के तहत अब संभव नहीं है।
उदाहरण के लिए, इस तुच्छ 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 get_data_pointer.c
get_data_pointer(0)
इसे साफ़ करने के लिए,
clear mex
[~,mexfiles] = inmem
version -modules
inmemवास्तव में एक खाली सेल सरणी देता है जो यह दर्शाता है कि कोई एमईएक्स-फाइलें मेमोरी में लोड नहीं की गई हैं, लेकिन version -modules( इस उत्तर से, अनिर्दिष्ट) ) अभी भी /Users/cris/matlab/get_data_pointer.mexmaci64अपने आउटपुट में दिखाता है। और MEX- फ़ाइल स्रोत कोड को बदलना और फिर से संकलित करना दर्शाता है कि, वास्तव में, MEX-file को कभी भी पुनः लोड नहीं किया जाता है, पुराने संस्करण को अभी भी चलाया जा रहा है जब तक कि कोई MATLAB से बाहर नहीं निकल जाता है।
मैं इसे macOS Mojave पर MATLAB R2017a पर देख रहा हूं। यह उच्च सिएरा के तहत एक ही MATLAB संस्करण के साथ कोई समस्या नहीं थी।
मैं MATLAB को पुनः आरंभ किए बिना MEX- फ़ाइल को कैसे लोड करने के लिए मजबूर कर सकता हूं?