[ gelöst ]ld: Undefined symbols:



  • Vielen Dank erstmal für deine Antwort.

    Ein Hello World bekomme ich hin.

    Wenn ich z.b. das hier laufen lasse, dann klappts:

    #include <stdio.h>
    #include <pam.h>
    
    int main (int argc, const char * argv[]) {
    /*
        char fp[256] = "bar.jpg";
        FILE* myFile;
        myFile = pm_openr(fp);
    */   
        printf("Yeah!\n");
        return 0;
    }
    

    Einfach auf das pm_openr kann er irgendwie nicht zugreifen!?



  • ist denn pm_openr in pam.h deklariert ?



  • nicht direkt im pam.h

    aber im pam.h:

    /*----------------------------------------------------------------------------
       These are declarations for use with the Portable Arbitrary Map (PAM)
       format and the Netpbm library functions specific to them.
    -----------------------------------------------------------------------------*/
    
    #ifndef PAM_H
    #define PAM_H
    
    #include "pm.h"
    #include "pnm.h"
    ...
    ...
    

    und schliesslich im pm.h:

    ...
    
    FILE *
    pm_openr_seekable(const char name[]);
    
    ...
    

    sollte ja eigentlich klappen oder?



  • naja, wenn du die funktion pm_openr_seekable aufrufen willst,
    warum schreibst du dann in deinem main-programm pm_openr ?



  • ahh sorry - bin langsam wirr im kopf

    ( so dass ich mitlerweile beim 'bin' automatisch an den binary ordner denke! )

    will schon die funktion pm_openr verwenden, nur falsches kopiert:

    ...
    
    FILE* 
    pm_openr (const char* const name);
    
    ...
    


  • oder existieren beide funktionen ?
    naja, guck mal hier:
    http://www.macuser.de/forum/showthread.php?t=336200
    vielleicht hilft dir das weiter, da sind son paar aufruf-beispiele



  • :- )

    merci - aber der thread ist von mir.

    leider bleibt das problem aber immer noch bestehen. : -(



  • hast du auch alles richtig gemacht ?
    die datei doc/INSTALL richtig gelesen und befolgt ?



  • ja die hab ich gelesen und alles dementsprechend befolgt.
    aber irgendwo happerts einfach immer noch!



  • vielleicht hast du ein nightly-build-snap erwischt und keine stable version ?



  • vittel schrieb:

    ja die hab ich gelesen und alles dementsprechend befolgt.
    aber irgendwo happerts einfach immer noch!

    das habe ich auch mal gedacht und trotzdem wollten die bibliotheken nicht laufen.
    es kommt aber tatsächlich mal vor, das eine bibliothek fehlerhaft ist.

    am besten probierst du die library noch einmal aufzubauen. wenns immer noch nicht geht, poste die fehlermeldung dem maintainer. oder probier ne andere bibli.



  • wie gesagt ich bin ein anfänger bezgl. c - programmierung.
    daher jetzt vielleicht ein blöde frage.

    aber wie muss ich das ganze kompilieren.
    ich will am schluss ein command line tool. also versuch ich das ganze als exectuble - was nicht klappt.

    wechsle ich aber auf static library so kompiliert das ganze - natürlich kann ichs dann nicht ausführen.

    shared library kompiliert auch nicht.

    aber wie gesagt eigentlich will ich eine ausführbare datei!

    ( verwende eclipse / cdt )



  • vittel schrieb:

    wechsle ich aber auf static library so kompiliert das ganze - natürlich kann ichs dann nicht ausführen.

    dann mach dir doch ein progrämmchen, das diese library benutzt d.h. hinzulinkt.
    🙂



  • und wie genau funktioniert das mit den dynamischen bibliotheken? es existiert eine bibliothek libnetpbm.dylib - ich geh mal davon aus das meine gesuchten funktionen da drin sind.
    allerdings greift er wohl nicht darauf zu wenn ich -L/opt/local/lib setze.
    und wenn ich explizit darauf verweise -l/opt/local/lib/libnetpbm.dylib findet er das file nicht!

    warum geht das nicht? oder warum darf die library nicht dynamisch sein.

    ( wie gesagt, bin anfänger)

    **** Build of configuration Debug for project test2 ****

    make all
    Building target: libtest2.dylib
    Invoking: MacOS X C Linker
    gcc -nostartfiles -L/opt/local/lib -dynamiclib -o "libtest2.dylib" ./vrg.o -l/opt/local/lib/libnetpbm.dylib
    /usr/libexec/gcc/i686-apple-darwin8/4.0.1/libtool: can't locate file for: -l/opt/local/lib/libnetpbm.dylib
    /usr/libexec/gcc/i686-apple-darwin8/4.0.1/libtool: file: -l/opt/local/lib/libnetpbm.dylib is not an object file (not allowed in a library)
    make: *** [libtest2.dylib] Error 1



  • ein simples -lNetpbm bringt alles zum laufen.

    Nur wo steht davon was?

    Prost!



  • vittel schrieb:

    Nur wo steht davon was?

    Vermutlich irgendwo im Kapitel "Grundlagen der Benutzung externer Bibliotheken" - ich finde jedenfalls, es muss nicht im Handbuch jeder Bibliothek gesondert erwähnt werden.

    Ist nicht bös gemeint, aber das sind nunmal Grundlagen (weshalb mich erstaunt, dass der Vorschlag -lnetpbm - oder zumindest verbal "hast Du die Bibliothek eingebunden" - in zwei Seiten Thread nicht einmal gemacht wurde).



  • ich könnte jetzt noch ein 3. mal hier hinschreiben dass ich anfänger bin, aber das lass ich jetzt sein 🙂

    bis anhin ging ich davon aus dass ich mit der pfadangabe bereits die bibliothek einbinde.


Anmelden zum Antworten