Linker Fehler, beim Einbinden einer .so file [gelöst]
- corpsman
- Lazarusforum e. V.
- Beiträge: 1676
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Linker Fehler, beim Einbinden einer .so file [gelöst]
Guten Morgen,
Ich versuche gerade die Newton Library unter Lazarus zum laufen zu bekommen.
Das Problem ist natürlich das es keine pas file gibt die diese .so Datei ansteuert, nur eine .h file, diese versuche ich gerade zu portieren.
Ich habe das Problem hier bereits gepostet, doch nun bin ich an einem Fehler den ihr Lazarus spezialisten wohl eher lösen könnt.
Ich habe also angefangen die nwetonimport.pas selbst zu schreiben, und versuche mit dieser auf libnewton.so zu zu greifen.
Das Problem ist das ich nun einen "Linker Fehler" bekomme. Und ich nicht verstehe was ich falsch gemacht habe.
Meine Hoffnung, wenn das irgendwann mal Kompiliert dann Libnewton.so nutzen zu können.
Wer kann mir also sagen was ich ändern mus damit der Linker Fehler nicht kommt.
Anbei alles was ihr zum testen benötigt..
Ich versuche gerade die Newton Library unter Lazarus zum laufen zu bekommen.
Das Problem ist natürlich das es keine pas file gibt die diese .so Datei ansteuert, nur eine .h file, diese versuche ich gerade zu portieren.
Ich habe das Problem hier bereits gepostet, doch nun bin ich an einem Fehler den ihr Lazarus spezialisten wohl eher lösen könnt.
Ich habe also angefangen die nwetonimport.pas selbst zu schreiben, und versuche mit dieser auf libnewton.so zu zu greifen.
Das Problem ist das ich nun einen "Linker Fehler" bekomme. Und ich nicht verstehe was ich falsch gemacht habe.
Meine Hoffnung, wenn das irgendwann mal Kompiliert dann Libnewton.so nutzen zu können.
Wer kann mir also sagen was ich ändern mus damit der Linker Fehler nicht kommt.
Anbei alles was ihr zum testen benötigt..
- Dateianhänge
-
- newtonimport.pas
- meine bisherige NewtonImport.pas, einfach in die Uses liste eines Leeren Projectes mit aufnehmen, schon kommt der Linker Fehler.
- (652 Bytes) 112-mal heruntergeladen
-
libNewton.so.tar.gz- die .so file
- (497.98 KiB) 93-mal heruntergeladen
-
Newton.h- Die header Datei, mit der es unter c funktionieren würde.
- (52.89 KiB) 88-mal heruntergeladen
Zuletzt geändert von corpsman am Do 13. Aug 2009, 16:32, insgesamt 1-mal geändert.
--
Just try it
Just try it
Re: Linker Fehler, beim Einbinden einer .so file
Wo hast du denn die libNewton.so hingelegt?
P.S.:
Und bitte tu nicht doppelt posten:
http://www.delphipraxis.net/post1068406 ... c3#1068406" onclick="window.open(this.href);return false;
Es lesen sowieso früher oder später immer die gleichen Leute das gleiche Zeug. Zwei Versionen der gleichen Frage nerven nur.
P.S.:
Und bitte tu nicht doppelt posten:
http://www.delphipraxis.net/post1068406 ... c3#1068406" onclick="window.open(this.href);return false;
Es lesen sowieso früher oder später immer die gleichen Leute das gleiche Zeug. Zwei Versionen der gleichen Frage nerven nur.
-
Targion
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Linker Fehler, beim Einbinden einer .so file
Die libNewton.so muss bei deinen Projektdateien oder in /usr/lib liegen.
(Damit das Programm später auch läuft, würde ich die lib nach /usr/lib kopieren)
(Damit das Programm später auch läuft, würde ich die lib nach /usr/lib kopieren)
- corpsman
- Lazarusforum e. V.
- Beiträge: 1676
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: Linker Fehler, beim Einbinden einer .so file
Der Fehler bleibt der selbe...corpsman@corpsman2:/usr/lib$ ls libN*.so
libNewton.so
corpsman@corpsman2:/usr/lib$
Und bei Delphipraxis, ists halt so das wenn man nen Post in nem anderem Forum macht gibt man den querlink mit an und das ist OK.
--
Just try it
Just try it
Re: Linker Fehler, beim Einbinden einer .so file
Falsches Forum:
http://www.pascalgamedevelopment.com/fo ... 451.5;wap2" onclick="window.open(this.href);return false;
http://www.newtondynamics.com/forum/index.php" onclick="window.open(this.href);return false;
http://www.pascalgamedevelopment.com/fo ... 451.5;wap2" onclick="window.open(this.href);return false;
http://www.newtondynamics.com/forum/index.php" onclick="window.open(this.href);return false;
-
Targion
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Linker Fehler, beim Einbinden einer .so file
@corpsman: Deine Header-übersetzung scheint fehlerhaft zu sein. Eigentlich brauchst du auch nicht den C-Header übersetzen. Die Windows-Delphi-Bindings sollten mit geringfügigen Änderungen auch unter Linux funktionieren.
- corpsman
- Lazarusforum e. V.
- Beiträge: 1676
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: Linker Fehler, beim Einbinden einer .so file
Leider ist
http://www.newtondynamics.com/forum/vie ... php?t=2758" onclick="window.open(this.href);return false;
nicht erreichbar, ob nun als Member oder nicht.
Und ich hab nun mal alles rausgeworfen was rauswerfbar war und selbst dieser Code :
Erzeugt bereits den Fehler, was mir sagt, das es wohl irgendwelche Compilerswitches sein müssen die man wohl setzen ,mus, aber

http://www.newtondynamics.com/forum/vie ... php?t=2758" onclick="window.open(this.href);return false;
nicht erreichbar, ob nun als Member oder nicht.
Und ich hab nun mal alles rausgeworfen was rauswerfbar war und selbst dieser Code :
Code: Alles auswählen
unit NewtonImport;
{$mode objfpc}{$H+}
{$L libNewton.so}
interface
implementation
end.gehen nicht, das waren die einzigen die Google noch ausgespuckt hat{$linklib gcc}
{$linklib c}
--
Just try it
Just try it
-
Targion
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Linker Fehler, beim Einbinden einer .so file
Code: Alles auswählen
{$L libNewton.so}
Zuletzt geändert von Targion am Do 13. Aug 2009, 15:53, insgesamt 1-mal geändert.
Re: Linker Fehler, beim Einbinden einer .so file
$L ist nicht für shared libraries
http://www.freepascal.org/docs-html/pro ... 60001.1.41" onclick="window.open(this.href);return false;
http://www.freepascal.org/docs-html/pro ... 60001.1.41" onclick="window.open(this.href);return false;
- corpsman
- Lazarusforum e. V.
- Beiträge: 1676
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: Linker Fehler, beim Einbinden einer .so file
Juhee,
Ich habe es nun endlich geschafft.
1. Es gibt bereits Header für Newton.dll ver 2.0
diese sind hier
Allerdings sind diese sehr buggy und funktionieren nicht unter FPC, zumindest nicht wenn man nicht folgende änderungen vornimmt.
- die Windows units rauswerfen und durch geeignete Linux units ersetzen
- die Compilerswitches an geeigneter stelle anpassen
{$linklib stdc++}
- die libnewton.so mus umbenannt werden in "libNewton.so" und an einer geeigneten stelle gespeichert werden, bei mir wars
/usr/lib
Dann gings.
Ich habe es nun endlich geschafft.
1. Es gibt bereits Header für Newton.dll ver 2.0
diese sind hier
Allerdings sind diese sehr buggy und funktionieren nicht unter FPC, zumindest nicht wenn man nicht folgende änderungen vornimmt.
- die Windows units rauswerfen und durch geeignete Linux units ersetzen
- die Compilerswitches an geeigneter stelle anpassen
{$linklib stdc++}
- die libnewton.so mus umbenannt werden in "libNewton.so" und an einer geeigneten stelle gespeichert werden, bei mir wars
/usr/lib
Dann gings.
--
Just try it
Just try it
-
Socke
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Linker Fehler, beim Einbinden einer .so file
Argh! Unter Linux entweder einen Symlink anlegen (ln -s name ziel) oder (noch viel besser) den Namen in der Pascal-Unit ändern. Wenn du die Bibliotheksdatei selbst umbenannt hast, kanns sein, dass irgendwann irgendetwas diese nicht mehr findet.corpsman hat geschrieben:- die libnewton.so mus umbenannt werden in "libNewton.so" und an einer geeigneten stelle gespeichert werden, bei mir wars
/usr/lib
Wenn du das ganze portabel halten möchtest, könntest du mit Compiler-Switchs arbeiten (um bspw. den Namen je nach OS zu ändern). Beispiele gibts dazu zur genüge.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein