Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211

    [Linker error] undefined reference to [C++]

    salve a tutti
    sto iniziando a programmare in cpp e un esercizio mi chiede di creare una libreria statica che implementa una funzione di stampa array. io ho creato un progetto per la libreria e un progetto di prova che sono i seguenti:

    mioarray.h
    codice:
    void stampa_array(int*, int);
    mioarray.cpp
    codice:
    #include<iostream>
    #include<string>
    #include"mioarray.h"
    using namespace std;
    
    void stampa_array(int* vet, int numelem)
    {
         int i = 0;
         while (i <= numelem)
               cout << vet[i] << " ";
         cout << "\n";
    }
    provaarray
    codice:
    #include <iostream>
    #include <string>
    #include "mioarray.h"
    
    using namespace std;
    
    int main()
    {
        int i = 0;
        int* vettore;
        int numeroelem;
        
        cout << "inserire il numero di elementi da inserire nel vettore \n";
        cin >> numeroelem;
        
        while (i <= numeroelem - 1)
        {
              cout << "immettere il " << (i + 1) << "^ elemento ";
              cin >> vettore[i++]; 
        }
        
        stampa_array(vettore, numeroelem);
        
        system("pause");
        return 0;
    }
    la libreria mioarray.a mi viene creata mentre quando mando in compilazione ed esecuzione il progetto provaarray mi viene visualizzato il seguente errore:

    [Linker error] undefined reference to `stampa_array(int*, int)'
    ld returned 1 exit status
    [Build Error] [provaarray.exe] Error 1


    dove ho sbagliato?? e cosa devo fare per rimediare???

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Devi indicare nelle proprietà del progetto la libreria che vuoi linkare.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211
    la libreria da linkare è specificata, è mioarray.h ed è presente sia nella realizzazione del metodo sia nel progetto di prova.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da pietrol83
    la libreria da linkare è specificata, è mioarray.h ed è presente sia nella realizzazione del metodo sia nel progetto di prova.
    mioarray.h *non* è una libreria, ma un file header. La libreria è il file mioarray.a, ed è quello che devi indicare al linker (non nel tuo sorgente), nell'ambiente che usi o nella linea di comando se è il caso.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di Freax
    Registrato dal
    Jul 2006
    Messaggi
    460
    Diciamo che la libreria è qualcosa meno dell'eseguibile e che si crea sempre tramite compilazione, non puoi creare una libreria semplicemente scrivendo del codice, la devi comunque compilare, la libreria è in pratica una collezione di 1 o più file oggetto.

    non c'è una estensione precisa per un file di libreria, è convenzione usare .a o .lib, ma in realtà non c'è uno standard scritto, è uno standard de facto.

    Se puoi, specifica anche l'ambiente che usi.

    http://www.delorie.com/djgpp/v2faq/faq8_22.html

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211
    la librearia con estensione .a viene creata tranquillamente senza nessun problema, però quando mando in esecuzione il progetto non la linka.

  7. #7
    Utente di HTML.it L'avatar di Freax
    Registrato dal
    Jul 2006
    Messaggi
    460
    Originariamente inviato da pietrol83
    la librearia con estensione .a viene creata tranquillamente senza nessun problema, però quando mando in esecuzione il progetto non la linka.
    se non ci dici che ambiente usi è praticamente impossibile darti una mano, probabilmente si tratta di un argomento da passa al compilatore o all'IDE, ma se non dici cosa usi noi non abbiamo la palla di vetro ...

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211
    io uso il dev C++

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da pietrol83
    la librearia con estensione .a viene creata tranquillamente senza nessun problema, però quando mando in esecuzione il progetto non la linka.
    Perché lo ripeti? Si è capito ...

    Ti ho risposto già che devi indicare il nome della libreria

    tuofile.a

    nell'ambiente di sviluppo, nelle proprietà del tuo progetto o, nelle linea di comando per la compilazione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.