Newsgroup: it.comp.os.linux.development
Titolo: [c++] problemi con libreria fann,  undefined reference to

Buongiorno, da giorni sto disperatamente cercando una libreria per le
reti neurali che funzioni in c++ su linux. ho trovato fann che sembra
fare al caso mio  (
http://leenissen.dk/fann/wp/help/getting-started/
).
non so se qualcuno l'ha mai usata.
 istallandola con apt-get, come suggerito dal sito, mi installa la
versione (obsoleta) 1.2. e in fase di compilazione non trova una
funzione. in particolare l'errore è: ‘fann_create_standard’ was not
declared in this scope.
 
allora disinstallo quella, scarico e installo manualmente (./configure
-> make -> sudo make install) il pacchetto per la versione 2.10.
sembra andare a buon fine e mi stampa il testo:
 
Libraries have been installed in:
   /usr/local/lib
 
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'
 
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
 
 
la differenza tra prima è che ora non ho il file fann.h in /usr/
include  ma non sembra essere un problema perchè se includo "fann.h"
non me lo segna come errore.
il problema sta nel fatto che compilando il loro codice di esempio:
#include "fann.h"
 
int main()
{
    const unsigned int num_input = 2;
    const unsigned int num_output = 1;
    const unsigned int num_layers = 3;
    const unsigned int num_neurons_hidden = 3;
    const float desired_error = (const float) 0.001;
    const unsigned int max_epochs = 500000;
    const unsigned int epochs_between_reports = 1000;
 
    struct fann *ann = fann_create_standard(num_layers, num_input,
num_neurons_hidden, num_output);
 
    fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC);
    fann_set_activation_function_output(ann, FANN_SIGMOID_SYMMETRIC);
 
    fann_train_on_file(ann, "xor.data", max_epochs,
epochs_between_reports, desired_error);
 
    fann_save(ann, "
xor_float.net
");
 
    fann_destroy(ann);
 
    return 0;
}
 
l'errore che mi da è questo:
/tmp/cchCb1fp.o: In function `main':
xor.cpp:(.text+0x62): undefined reference to `fann_create_standard'
xor.cpp:(.text+0x7a): undefined reference to
`fann_set_activation_function_hidden'
xor.cpp:(.text+0x8e): undefined reference to
`fann_set_activation_function_output'
xor.cpp:(.text+0xbb): undefined reference to `fann_train_on_file'
xor.cpp:(.text+0xcf): undefined reference to `fann_save'
xor.cpp:(.text+0xdb): undefined reference to `fann_destroy'
collect2: ld returned 1 exit status
 
come posso fare a risolvere questi errori? è un problema di
installazione delle librerie?
 
scusate la prolissità, spero di essere stato chiaro

 scusate la prolissità, spero di essere stato chiaro
 
come hai compilato? 

alla fine ho risolto includendo nel path /usr/local/include
e includendo <*floatfann.h>, così si chiama la nuova
interfaccia per c++.
 
saluti
-- 
Articolo inviato via web dal servizio gratuito 
http://forum.cyberspazio.org
 
--
www.cyberspazio.org
 - Servizi WEB Hosting 
--