shared libraries(shared objects) benutzen



  • hallo an alle,

    ich möchte in meinem c++ programm shared libraries benutzen,
    muss ich in dem source code noch was explizit angeben?

    danke im voraus.



  • Nein. Einfach mit -l<name> linken und es sollte funktionieren. (Die libc wird ja mittlerweile auch fast überall dynamisch gelinkt ...)



  • hab jetzt den code geschrieben.
    wollte dann die datei beim kompielieren linken.
    allerdings kommt da die fehlermeldung, er würde
    die klasse (diese wird in der library näher beschrieben) nicht kennen.

    meine library liegt allerdings im selben ordner wie der source code.
    liegts vielleicht daran?



  • Bitte demnächst wenigstens die Fehlermeldung posten. Daran erkennt man zumindest ob es eine Compiler- oder Linker-Meldung ist. Da ich ersteres vermute: Hast Du denn auch eine .h eingebunden, in der die Klasse definiert wird?



  • Bitte demnächst wenigstens die Fehlermeldung posten.

    Ja, sorry.

    nein, die headerdatei habe ich vergessen. werde gleich ausprobieren.
    vielen dank erstmal.



  • das mit der headerdatei war rihtig. jetzt kriege ich aber eine Linkermeldung:

    /usr/bin/ld: cannot find -llib.so
    collect2: ld returned 1 exit status

    das ist das einzige fehler.

    den LD_LIBRARY_PATH habe ich schon gesetzt.
    und die option...

    gcc name.cpp -L/verzeichnis/verzeichnis/ -llib.so

    ...habe ich auch schon ausprobiert.

    weiß nicht wirklich warum der linker die library immernoch nicht findet.

    für die hilfe bin ich dankbar.



  • Die -l-Option benutzt man anders. Die Library muss einen Namen der Form libname.so haben und bei -l gibt man dann nur den Teil zwischen lib und .so an (daher linkt man die Mathe Library zB auch mit -lm, weil die libm.so heißt).



  • danke. es funktioniert soweit.


Log in to reply