Problema installazione winform su altro PC

di Anonimizzato28457 il
8 risposte
Ciao a tutti.
Approfittando della reclusione della quarantena ho iniziato a passare nottate su visual studio, ho fatto un programmino winform che richiama una funzione di matlab, per chi è interessato è spiegato come fare su questo link:
https://it.mathworks.com/help/matlab/matlab_external/call-matlab-function-from-c-client.html
Per fare il setup ho usato advanced installer.
Il codice è questo, nell'evento del click bottone
 
            double a = 2;
            double b = 4;
            // Create the MATLAB instance 
            MLApp.MLApp matlab = new MLApp.MLApp(); 

            // Change to the directory where the function is located 
            matlab.Execute(@"cd c:\CartellaFunzioneMatlab"); 

            // Define the output 
            object result = null; 

            // Call the MATLAB function myfunc
            matlab.Feval("FunzSom", 1, out result, a, b); 
             
            // Display result 
            object[] res = result as object[]; 
            
            double c = Convert.ToDouble(res[0]);
              
Ho creato una cartella in c:\ chiamata CartellaFunzioneMatlab" dove ho messo il file matlab FunzSom.m richiamato da Matlab execute.
Ho aggiunto nei riferimenti la COM
Ora il problema è che in debug da visual studio va bene, se la installo sul mio pc su cui ho matlab r2018a va tutto bene, ma se la installo su un altro pc non parte, sul nuovo pc ho anche installato il runtime di matlab della mia stessa versione, ma non va, mi da il seguente errore:

recupero della class factory COM per il componente con CLSID {A6581658-356C-4A72-B26C-9D91262CA7E1} non riuscito a causea del seguente errore: 80040154 interfaccia non registrata(eccezione da HRESULT: 0x 80040154(REGDB_E_CLASSNOTREGREGDB))

Qualcuno sa come risolvere, o cosa voglia dire questa cosa??
Ho letto un po in giro che forse è un problema di qualche dll , ma non so come muovermi.

8 Risposte

  • Esiste un runtime a 32 e uno a 64 bit? Quale hai installato?

    E il runtime non serve solo ad eseguire solo applicazioni compilate con Matlab? Se è così allora ti ci vuole Matlab e non solo il runtime perché quella funzione è in formato sorgente.
  • Ciao, grazie per la risposta, il runtime (https://it.mathworks.com/products/compiler/matlab-runtime.html) per la versione r2018a esiste solo a 64 bit.
    Si hai ragione, un mio amico ha fatto un exe direttamente da matlab, su cui si può creare anche un interfaccia tipo winforms, però più scarna, e per farlo partire su altri pc ha avuto bisogno del runtime, io credevo che fosse lo stesso usando visual studio per l'interfaccia.
    Quindi le dll non c'entrano in questo caso?
  • No. Hai bisogno di installare il prodotto (Matlab). Visual Studio non c'entra nulla.
  • Ok alloro provo ad installare la stessa versione di matlab che ho io sull'altro pc grazie!!
  • Ciao Oregon grazie mille!! Ho fatto come hai detto tu e il programma è partito.
    Vorrei chiederti qualcos'altro se mi permetti.
    Che vuol dire che la funzione è in formato sorgente? Sai dirmi se esiste un modo per chiamare la funzione senza installare matlab?
  • Non mi interesso di matlab ma so che il codice che hai mostrato (e per questo è in formato sorgente) può essere compilato (reso in un formato leggibile ed eseguibile solo dal sistema) e in questo formato può essere utilizzato dal runtime.

    Farei questa domanda nella sezione apposita (Matlab) dove ti sapranno sicuramente dire di più.
  • Grazie di nuovo farò così
Devi accedere o registrarti per scrivere nel forum
8 risposte