2013-07-25 25 views
7

Ho compilato alcune funzioni MATLAB utilizzando Matlab R2012a in file .net DLL. e tutto funziona come dovrebbe sto usando WPF/C# .net 4.5 su Windows 7 64 bit e il mio programma funziona bene.Matlab builder NE/MCR su Windows 8

tuttavia ora stiamo trasferendo e testando il nostro programma su Windows 8 pro. abbiamo un problema in runtime - stiamo usando ovviamente MCR R2012a per eseguire i file .dll. non possiamo caricare le classi o le funzioni in win8 e il nostro programma si blocca.

qualcuno si è imbattuto in questo problema? sarà d'aiuto se compileremo le funzioni usando Matlab R2013a?

+0

Sarebbe utile conoscere alcuni comportamenti in caso di arresto anomalo del programma. Eventuali lead come errori distintivi, un codice di uscita specifico, qualcosa nel registro eventi, ecc.? – SeanKilleen

+0

Sì. C'è un errore: gestito (v4.0.30319) 'è terminato con il codice -1073741819 (0xc0000005)' violazione di accesso '. – Gilad

+0

Data la natura dell'errore, ci si è assicurati che l'account in cui è in esecuzione disponga di diritti di accesso completi a una delle cartelle che l'applicazione dovrebbe utilizzare? Vorrei anche vedere se è sufficiente fare clic con il pulsante destro del mouse sul programma e scegliere "Esegui come amministratore". Può essere che su Win8, cercando di fare qualcosa in quel contesto, viaggi un sistema UAC leggermente più sensibile. Per favore conferma se hai provato quelle cose. – SeanKilleen

risposta

11

La soluzione al problema MATLAB con Windows 8 è di aggiungere

[assembly: MathWorks.MATLAB.NET.Utility.MWMCROption("-nojit")] 

nel file di assieme.

Non so perché funzioni. nojit- non significa un compilatore just in time che crea file binari.

tuttavia quando ho aggiunto questo. ha funzionato anche su Windows 8 x64. con lo stesso MCR

0

La maggior parte dei problemi riscontrati con MCR riguardava il valore errato della variabile PATH. Questo può accadere quando si installa più di un MCR su un computer o, a volte, anche quando si installa solo uno. Dal momento che si ottiene un errore di violazione di accesso, immagino che il sistema possa trovare le DLL di MCR, ma trova quelle sbagliate (ad esempio 32 bit anziché 64 bit). Controlla attentamente il tuo ambiente PATH var e assicurati che indichi la posizione corretta delle DLL MCR.

+0

sono a conoscenza del problema, tuttavia questo funziona perfettamente in Windows 7 x64 e non funziona per la stessa configurazione su win 8 x64. stesso MCR R2012a X64. – Gilad

+0

Si interrompe immediatamente quando il MATLAB viene inizializzato (quando si crea un'istanza della classe generata per la prima volta) o fallisce solo quando si chiama un metodo? –

+0

non riesce quando si carica la classe per la prima volta. – Gilad