*.so einbinden
-
hab die libSharedRel.so file einfach in /usr/local/lib kopiert und bekomm den fehler
ld: cannot find -libSharedRel
was mach ich falsch?
-
Wie hast du compiliert? Wenn die Datei libSharedRel.so heißt muss der gcc-Parameter -lSharedRel sein und nicht -libSharedRel.
-
danke funzt...
wenn man erstmal die klippen umschifft hat is das ja genauso easy wie unter win
bei funktionen reicht ein extern vor dem prototyp... wie isses eigentlich bei klassen?kompiliert hab ichs via codewarrior... kdevelop wär mir zwar lieber gewesen... aber des hat ja keine dlls
-
du schreibst einfach normal deinen C++ Code und musst eben auf die Aufteilung achten, dass in den Header eben nur Deklarationen kommen und die Implementierung in die Code Datei.
KDevelop kann sicher auch dynamsiche Librarys. Zur not musst du die Makefile selber anpassen (siehe FAQ)
-
hast du mal n codebeispiel
ich bekomm unter win und lin fehler beim versuch klassen zu exportiern
-
//foo.hh class foo { public: int bar(double g); }; //foo.cc int foo::bar(double g) { //... }
-
es geht mir eigentlich weniger um die klassen (damit arbeite ich ja dauernd)
sondern um den export einer klasse aus einer dll/so
d.h. verwendung der klasse, ohne die implementierung in beiden einbinden zu müssen
-
du musst die Klasse nicht explizit exportieren, bei *.so Dateien. Bei *.dlls ist das anders (man 1 dlltool), aber dlls hab ich noch nie erstellt unter Linux.
-
.so unter linux is doch dasselbe wie .dll unter win
wie findet er dann die klasse wenn ich sie nich exportiert hab?
-
nein .so ist vom Prinzip das gleiche, arbeitet aber anders. Bei .so Dateien werden alle symbole automatisch exportiert. Du kannst aber unter Linux mit dlltool(1) auch .dlls erstellen. Wie das geht weiss ich aber nicht.
-
gibts auch .so's für windows?
ich will wenns geht den gleichen code verwenden mit möglich wenigen #ifdef's