LabVIEWForum.de
Linux shared libary (*.so) einbinden - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: DLL & externer Code (/Forum-DLL-externer-Code)
+---- Thema: Linux shared libary (*.so) einbinden (/Thread-Linux-shared-libary-so-einbinden)



Linux shared libary (*.so) einbinden - Donald - 17.02.2009 11:31

Moin liebe LVGemeinde,

habe vorab eine Frage zum einbinden von Shared Libiaries unter Linux. Ich habe mir die beiden Tutorials zum Einbinden von dll´s unter Windows angeschaut und muss sagen top. recht verständlich erklärt und käme auch damit zurecht.

Nun muss ich aber mit Linux arbeiten. Ich habe bereits eine *.so erstellt. War alles kein Problem. Was ich mich jetzt frage ist, ob ich auch ähnlich wie bei den dll´s einen Befehl wie "__declspec (dllexport)" in die source einfügen muss.

Sprich muss ich für die *.so auch noch was in die source mit einfügen. Habe schon gegooglet aber nichts diesbezüglich gefunden.

Danke euch im Voraus.

ps. falls wichtig unter linux habe ich nur die LV 8.2 zur Verfügung.


Linux shared libary (*.so) einbinden - rolfk - 18.02.2009 08:34

' schrieb:Moin liebe LVGemeinde,

habe vorab eine Frage zum einbinden von Shared Libiaries unter Linux. Ich habe mir die beiden Tutorials zum Einbinden von dll´s unter Windows angeschaut und muss sagen top. recht verständlich erklärt und käme auch damit zurecht.

Nun muss ich aber mit Linux arbeiten. Ich habe bereits eine *.so erstellt. War alles kein Problem. Was ich mich jetzt frage ist, ob ich auch ähnlich wie bei den dll´s einen Befehl wie "__declspec (dllexport)" in die source einfügen muss.

Sprich muss ich für die *.so auch noch was in die source mit einfügen. Habe schon gegooglet aber nichts diesbezüglich gefunden.

Danke euch im Voraus.

ps. falls wichtig unter linux habe ich nur die LV 8.2 zur Verfügung.

Das ELF Format (das binäre File Objekt file Format verwendet bei den meisten modernen Unixen) kennt keine spezifiken Export Direktiven. Alles was in den Objektfiles nicht als static (also grundsätzlich nur im eigenen Modul verfügbar) deklariert ist ist in einer shared library als Symbol verfügbar. GCC kennt aber das "__attribute__((dllexport))" um dem Linker einen extra hint zu geben.

Selber löse ich das so dass ich ein PreProzessor Symbol deklariere dass für Windows auf __declspec(dllexport) deklarieret wird und für Linux auf __attribute__((dllexport)) oder leer. Bei cygwin and mingw wird auch __declspec(dllexport) erkannt aber das sind dann auch die GCC Toolchains die spezifiek für Win32 angepasst sind.

Rolf Kalbermatter