Wann muss ich Lib linken?



  • Mahlzeit!

    Ich habe eine statische Bibliothek libFoo.a mit einer Funktion FooFunc:

    #include <osg/Viewer>
    class Creator { ... };
    
    void FooFunc() {
    
       osg::Viewer viewer; // Das hier ist definiert in libosgViewer.so
    
    }
    

    FooFunc benutzt die Klasse osg::Viewer aus OpenSceneGraph (steht in libosgViewer.so). Dh. libFoo.a linkt gegen libosgViewer.so.

    So, jetzt benutze ich in meinem Code (der ein Executable erzeugt) die Funktion FooFunc() aus libFoo.a. Dh mein executable linkt libFoo.a.

    Jetzt kriege ich komischerweise solche LinkerFehler

    Creator.cpp:(.text+0x310): undefined reference to `osgViewer::Viewer::Viewer()'

    Muss ich jetzt zu meinem Executable auch gegen libosgViewer.so linken?



  • ja, denn eine statische libs enhalten keine informationen über abhängikeiten.
    die .a dateien sind unter linux nichts anderes als ein archiv, welche alle objektdateien (kompilierte .c/.cpp dateien) enthält.


Anmelden zum Antworten