MATLAB, macOS Mojave'ye yükselttikten sonra artık MEX dosyalarını kaldırmıyor


10

MATLAB'de, clear mextüm MEX dosyalarını bellekten kaldırır (kilitlenmedikçe). MacOS'un önceki sürümlerinde, bir MEX dosyasını yeniden derleyebildim ve değiştirilmiş sürümü MATLAB'ı yeniden başlatmadan, sadece bir clear mexkomut vererek çalıştırabildim . Bu artık Mojave altında mümkün değil.

Örneğin, şu önemsiz MEX dosyasını ( get_data_pointer.c) alın:

#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 dosyasını oluşturabilir ve

mex get_data_pointer.c
get_data_pointer(0)

Temizlemek için,

clear mex
[~,mexfiles] = inmem
version -modules

inmemgerçekten bellekte hiçbir MEX dosyası yüklenmediğini gösteren boş bir hücre dizisi döndürür, ancak version -modules( bu cevaptan belgelenmemiş ) /Users/cris/matlab/get_data_pointer.mexmaci64çıktısında hala görünür. Ve MEX dosyası kaynak kodunun değiştirilmesi ve yeniden derlenmesi, MEX dosyasının hiçbir zaman yeniden yüklenmediğini, eski sürümün MATLAB'den çıkana kadar hala çalıştırıldığını gösterir.

Bunu macOS Mojave'deki MATLAB R2017a'da görüyorum. Bu, High Sierra altındaki aynı MATLAB sürümünde hiçbir zaman sorun olmadı.

MATLAB'ı yeniden başlatmadan MEX dosyasını kaldırmaya nasıl zorlayabilirim?


Bir hata raporu doldurdunuz mu?
Kamiccolo

@Kamiccolo: Hayır, görmedim. Bunun işletim sistemi ile ilgili bir sorun olduğu izlenimini edindim, ama emin değilim, MATLAB da olabilir. Bu yüzden bir hata raporu göndermeden önce bu konuda daha fazla bilgi edinmeyi umuyordum.
Cris Luengo

2
MacOS Majove kullanma.
m7913d

1
@ m7913d * Mojave
SS Anne

2
@CrisLuengo: Soruna neden olabilecek işletim sistemi olsa bile, Mathworks'ün araştırması gereken bir şey. MacOS var, elma MATLAB vardır şüpheliyim. Mathworks'ü böyle bir durumda yapardım.
Daniel

Yanıtlar:


0

Muhtemelen libstdc ++ değişikliği. Bu, Apple'ın bir süre önce kullanımdan kaldırıldığı bir çalışma zamanı kütüphanesidir (sanırım XCode 8) ve sonunda XCode 10 ve Mojave'de tamamen düştü . Yani sahip olduğunuz MEX dosyası muhtemelen daha eski bir sürümle derlenmiştir.

MEX dosya uyumluluğundaki MathWorks kuralları genellikle sürümler arasında çalışacaklarıdır, ancak uyumsuz bir değişiklik varsa (bunun gibi), yeniden derlemeniz gerekir.


Soru metninden de anlaşılacağı gibi, problem aynı MATLAB sürümünde ve işletim sisteminin aynı sürümünde derlenen MEX dosyaları ile olur. Aslında, derlediğim, çalıştırdığım ve daha sonra MATLAB'dan çıkmadan yeniden derlediğim basit bir MEX dosyasıyla sorunu gösteriyorum.
Cris Luengo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.