Traduzione Matlab-Scilab

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
0
voti

[71] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentexyz » 18 mar 2011, 11:59

fabrileroy ha scritto:perché?

Non conosco le tue conoscenze informatiche ma c'è una bella differenza tra una libreria dinamica e una statica. Consiglio di leggere qualche buon testo sulla teoria dei compilatori.

Il problema è molto semplice, il tuo codice chiama più funzioni dichiarate esterne. Quando si crea un programma o una libreria dinamica tutti i simboli dichiarati esterni devo essere per forza risolti, altrimenti il linker si rifiuta e segnala giustamente l'errore.

Le librerie statiche non sono create dal linker, ma da un altro programma il quale crea una semplice collezione di file oggetti ma non fa' nessun check sulla integrità di tutti i simboli, non è il suo compito.

Quando crei la libreria statica non risolvi il problema ma lo rimandi e poi Scilab (come molti programmi che utilizzano plugin esterni) vuole per forza una libreria dinamica non statica.

Avatar utente
Foto Utentefabrileroy
10 3
New entry
New entry
Messaggi: 54
Iscritto il: 1 feb 2011, 13:22
0
voti

[72] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentefabrileroy » 18 mar 2011, 12:13

xyz ha scritto:Il problema è molto semplice, il tuo codice chiama più funzioni dichiarate esterne. Quando si crea un programma o una libreria dinamica tutti i simboli dichiarati esterni devo essere per forza risolti, altrimenti il linker si rifiuta e segnala giustamente l'errore.


Quindi se non ho capito male devo fare in modo di rendere quelle funzioni (dichiarate extern void) delle funzioni non esterne. Potrei definirle in un file .h e includerlo ai file che necessitano quelle funzioni?

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
0
voti

[73] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentexyz » 18 mar 2011, 12:47

Scusa ma sembra che non leggi i messaggi precedenti, i manuali del compilatore, del linker e i libri sull'argomento. Inventi possibili soluzioni che non hanno senso.

    Messaggio 41 - errore: "undefined reference"
    Messaggio 42 - soluzione: linkare con la libreria "libmex"

    Messaggio 59 - errore: "undefined "reference"
    Messaggio 60 - soluzione: compilare insieme anche il file "spm_mapping.c"

    Messaggio 66 - errore: "undefined reference"
La soluzione al messaggio 66 la trovi da solo semplicemente trovando una libreria o un sorgente che definisce le funzioni mancanti, i noni delle funzioni vengono scritte insieme al messaggio d'errore. Questo è l'unico modo per risolvere questi tipi di problemi O_/

Avatar utente
Foto Utentefabrileroy
10 3
New entry
New entry
Messaggi: 54
Iscritto il: 1 feb 2011, 13:22
0
voti

[74] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentefabrileroy » 18 mar 2011, 13:16

Nel messaggio 70 ho riferito che ste "benedette" funzioni extern void sono presenti nel file spm_vol_access.c e spm_vol_utils.c e che non risultano presenti da nessuna altra parte (neanche nelle librerie). Tutto sommato io le due funzioni .c le ho incluse nella mia stringa di comando. Trovo strano il fatto che il compilatore mi dica che sono undefined.

Codice: Seleziona tutto

gcc -Wold-style-definition -Wold-style-declaration -O2 -shared -o lib_conv_vol.so -DSPM_DOUBLE spm_conv_vol.c spm_mapping.c win32mmap.c spm_vol_access.c spm_vol_utils.c spm_make_lookup.c spm_getdata.c -IC:\Programmi\scilab-5.3.0\modules\mexlib\includes -I"C:\Documents and Settings\User\Desktop\San Raffaele\Scilab\spm" -LC:\Programmi\scilab-5.3.0\bin -llibmex

Avatar utente
Foto Utentefabrileroy
10 3
New entry
New entry
Messaggi: 54
Iscritto il: 1 feb 2011, 13:22
0
voti

[75] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentefabrileroy » 20 mar 2011, 16:18

Ho trovato all'interno dei sorgenti di spm questo makefile chiamato spm_MAKE.sh
potrebbe servire per la compilazione dei miei sorgenti? ho provato usando il comando

Codice: Seleziona tutto

mingw32-make -f spm_MAKE.sh


ma mi ritorna: spm_MAKE.sh:12: *** missing separator. Stop.

sinceramente non so se questo file può essermi utile, anche perché come sintassi non assomiglia molto a questi (sarà modo di scriverlo antiquato):
http://www.matteolucarelli.net/opendev/makeintro.htm

ciao!
Allegati
spm_MAKE.zip
(2.01 KiB) Scaricato 123 volte

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
0
voti

[76] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentexyz » 20 mar 2011, 17:22

Quel file è per un comando presente in tutti i sistemi operativi POSIX si chiama "sh" (shell) e non può essere interpretato dal comando "make". Comunque è incompleto manca il file di supporto "gccopts.sh" e poi è scritto per la vecchia versione di SPM visto che si trova nei sorgenti di SPM99.

Ho cercato con Google visto che ignoravo l'esistenza di questo programma, SPM (Statistical Parametric Mapping):

http://www.fil.ion.ucl.ac.uk/spm/

SPM2 è molto vecchio, esistono versioni molto più recenti:

http://www.fil.ion.ucl.ac.uk/spm/software/
Ultima modifica di Foto Utentexyz il 20 mar 2011, 17:32, modificato 1 volta in totale.

Avatar utente
Foto Utentefabrileroy
10 3
New entry
New entry
Messaggi: 54
Iscritto il: 1 feb 2011, 13:22
0
voti

[77] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentefabrileroy » 20 mar 2011, 17:29

xyz ha scritto:SPM2 è molto vecchio, esistono versioni molto più recenti:


hai ragione ma mi è stato affidato SPM99 (che è ancora precedente a SPM2) per il tirocinio, quindi devo lavorare su questo e precisamente sulla parte riguardante lo smoothing.

Avatar utente
Foto Utentefabrileroy
10 3
New entry
New entry
Messaggi: 54
Iscritto il: 1 feb 2011, 13:22
0
voti

[78] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentefabrileroy » 20 mar 2011, 19:39

questo makefile ha già un aspetto più interessante...solo che non saprei se può servirmi (adattato in qualche modo) per spm99 visto che è di spm8 (le funzioni coinvolte sembrano le stesse).

Tutto per colpa di quelle introvabili functions in spm_vol_access.c :evil:
Allegati
Makefile.zip
(3.64 KiB) Scaricato 106 volte

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
0
voti

[79] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentexyz » 20 mar 2011, 19:56

I generale i Makefile sono scritti per compilare una esatta versione di un un programma, la sintassi è molto complessa e la struttura molto rigida. Credo di non aver mai visto un Makefile studiato per una versione di un software utilizzabile in una versione precedente o successiva.

Avatar utente
Foto Utentefabrileroy
10 3
New entry
New entry
Messaggi: 54
Iscritto il: 1 feb 2011, 13:22
0
voti

[80] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentefabrileroy » 21 mar 2011, 10:10

nel Makefile ho notato che compila "spm_vol_utils.c" specificando ogni volta una variabile 'SPM_*' diversa presente nel #ifdef di "spm_vol_utils.c". Risulterebbe utile farlo anche nel mio caso o basta specificarne uno solo in compilazione?
Tu precedentemente hai detto di specificarne una sola...ma sinceramente non so proprio come risolvere il mio problema relativo alle funzioni extern di spm_vol_access.c e quindi sto facendo un po' di tentativi.

THX


Torna a “Programmi applicativi: simulatori, CAD ed altro”