ম্যাটলবস আর ম্যাকস মোজেভেজে আপগ্রেড হওয়ার পরে এমএক্স-ফাইলগুলি আর লোড করছে না


10

ম্যাটল্যাবে, clear mexসমস্ত এমএক্স-ফাইলগুলি মেমরি থেকে আনলোড করে (যদি না তারা লক হয়)। ম্যাকোসের পূর্ববর্তী সংস্করণগুলির অধীনে, আমি কোনও clear 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তার আউটপুট দেখায় । এবং মেক্স-ফাইল উত্স কোড পরিবর্তন করে এবং পুনরায় সংকলন প্রমাণ করে যে, এমএক্স-ফাইলটি কখনও পুনরায় লোড করা হয় না, ম্যাটল্যাব থেকে প্রস্থান না হওয়া অবধি পুরানো সংস্করণটি এখনও চলছে।

আমি এটি ম্যাকওএস মোজভেভে MATLAB R2017a এ দেখছি। হাই সিয়েরার অধীনে একই ম্যাটল্যাব সংস্করণে এটি কখনও সমস্যা ছিল না।

পুনরায় আরম্ভ না করে কীভাবে আমি ম্যাটল্যাবকে এমএক্স-ফাইলটি আনলোড করতে বাধ্য করতে পারি?


আপনি কি একটি বাগ রিপোর্ট পূরণ করেছেন?
কামিককোলো

@ কাম্যাককোলো: না, আমি পাইনি। আমার ধারণা আছে যে এটি ওএসের ক্ষেত্রে একটি সমস্যা, তবে আমি নিশ্চিত নই, এটি ম্যাটল্যাবও হতে পারে। তাই আমি একটি বাগ রিপোর্ট ফাইল করার আগে এটি সম্পর্কে আরও জানার আশা করছিলাম।
ক্রিস লুয়েংগো

2
আমি বলব, ম্যাকোস মাজোভ ব্যবহার করবেন না।
m7913d

1
@ এম7913 ডি * মোজাভে
এসএস অ্যান

2
@ ক্রিসলুয়েঞ্জো: এমনকি যদি এটি ওএসের কারণে সমস্যা দেখা দিতে পারে তবে ম্যাথওয়ার্কসকে এটি তদন্ত করতে হবে। তাদের ম্যাকোস রয়েছে, আমি সন্দেহ করি আপেলের ম্যাটল্যাব উপলব্ধ রয়েছে। আমি এমন পরিস্থিতিতে ম্যাথওয়ার্কস করতাম।
ড্যানিয়েল

উত্তর:


0

এটি সম্ভবত libstdc ++ পরিবর্তন। এটি একটি রানটাইম লাইব্রেরি যা অ্যাপল বেশ কিছুক্ষন আগে নষ্ট হয়ে গেছে (এক্সকোড 8 আমি মনে করি) এবং অবশেষে এক্সকোড 10 এবং মোজাভেতে সম্পূর্ণ বাদ পড়ে । সুতরাং আপনার ম্যাক্স ফাইলটি সম্ভবত একটি পুরানো সংস্করণ দিয়ে সংকলিত হয়েছে।

ম্যাক ওয়ার্কস ম্যাক্স ফাইলের সামঞ্জস্যের নিয়মগুলি হল যে তারা প্রায়শই সংস্করণগুলির মধ্যে কাজ করবে, তবে যদি কোনও বেমানান পরিবর্তন হয় (তবে এটির মতো), তবে আপনাকে পুনরায় সংকলন করতে হবে।


আপনি যেমন প্রশ্নের পাঠ্য থেকে বলতে পারেন, এমএটিএলবির একই সংস্করণ এবং ওএসের একই সংস্করণে সংকলিত এমএক্স-ফাইলগুলির সাথে সমস্যাটি ঘটে। আমি প্রকৃতপক্ষে একটি সাধারণ এমএক্স-ফাইল দিয়ে সমস্যাটি প্রদর্শন করি যা আমি ম্যাটল্যাব থেকে বেরিয়ে না গিয়ে সংকলন করেছি, দৌড়েছি এবং তারপরে পুনরায় সংকলন করেছি।
ক্রিস লুয়েংগো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.