RIECCOMI!!:-)
ho fatto girare gli exe creati in c ed è tutto o.k.
Poi ho creato una 2 Dll in modo tale da poterle richiamare da matlab.
Quando pero richiamo le DLL da Matlab mi da problemi.(la funzione di creazione della shared memory la ho chiamata (Wmain), quella di lettura della shared memory l ho invece chiamata(Rmain).
In pratica, lancio matlab con il seguente codice:
clear
loadlibrary('SumDLL','General.h')
libfunctions SumDLL -full
risultato=calllib ('SumDLL','Wmain')
a=libisloaded('SumDLL');
unloadlibrary SumDLL
e crea la shared memory.
poi rilancio un altro file matlab con seguente codice:
clear
f=8;
d=2;
loadlibrary('SumDLL','General.h')
libfunctions SumDLL -full
risultato=calllib ('SumDLL','Rmain')
a=libisloaded('SumDLL');
unloadlibrary SumDLL
Il primo file mi crea sicuramente la memoria condivisa in quanto ho messo come return il valore 3 in caso la memoria venga creata ed ineffetti il programma restituisce tale valore.Se lancio dopo il secondo file matlab( quello che lancia la funzione di lettura) mi da come errore il seguente:
"Could not open file mapping object ".
A mio avviso il problema è dovuto al fatto che la memoria condivisa funziona solo se entrambi i processi sono in esecuzione. Matlab pero credo non faccia rimanere il primo processo in esecuzione.Infatti se lancio l' exe di creazione della shared memory (e lascio il programma di creazione della shared memory in esecuzione) e poi lancio il programma matlab di lettura funziona.
Sapreste indicarmi una soluzione per fare in modo che il primo processo ( quello di creazione della shared memory) resti in esecuzione quando è lanciato da matlab?
Grazie.