Einbinden der libbass.so

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Mathias
Beiträge: 7056
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Einbinden der libbass.so

Beitrag von Mathias »

An dynamische Einbindung hatte ich auch schon gedacht. Unter Windows hatte ich das gemacht. Die unit dynlibs sagt mir noch nichts. Muss ich mal gucken.
Hier ein einfache Beispiel mit prtinf:

Code: Alles auswählen

program project1;

uses
  DynLibs;

var
  LibHandle: TLibHandle;
  printf: function(format: PChar): integer; varargs; cdecl;

begin
  LibHandle := LoadLibrary('libc.so.6');

  if LibHandle = NilHandle then begin
    Writeln('Konnte Bibliothek nicht laden.');
    Halt(1);
  end;

  Pointer(printf) := GetProcAddress(LibHandle, 'printf');
  if printf = nil then begin
    Writeln('Konnte printf nicht finden.');
    UnloadLibrary(LibHandle);
    Halt(1);
  end;

  printf(#10#10'String: %s     Zahl: %d'#10#10, 'abc', 123);

  UnloadLibrary(LibHandle);
end.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Garfield
Beiträge: 184
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 24.04 LTS (Laz 4.2 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Einbinden der libbass.so

Beitrag von Garfield »

Danke. Dann werde ich mich mal dran machen.
Gruß Garfield

Warf
Beiträge: 2210
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Einbinden der libbass.so

Beitrag von Warf »

Ah an das Debuggen mit Lazarus hab ich gar nicht gedacht 😅
Das geht natürlich auch recht einfach, im Menü unter "Run" (hab mein Sytem auf englisch, ich glaub im Deutschen ists "Start") dann auf "Run Parameters" ("Start Parameter" vermutlich) und da im Tab Environment ("Umgebungsvariablen"?) kannst du LD_LIBRARY_PATH einfach manuell setzen. Am besten als Absoluter Pfad, wobei es garantiert auch Variablen (vielleicht sowas wie $(Project Path)) oder so gibt, aber das weiß ich leider nicht aus dem Kopf.

Benutzeravatar
Garfield
Beiträge: 184
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 24.04 LTS (Laz 4.2 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Einbinden der libbass.so

Beitrag von Garfield »

"Start" -> "Startparameter ..." -> Tab "Umgebung" heißt es. Dort in den Benutzervorgaben den Pfad eingetragen und die Fehlerfehler ist weg. :D

Vielen herzlichen Dank, Warf.
Dateianhänge
Bildschirmfoto vom 2025-09-23 22-41-48.png
Bildschirmfoto vom 2025-09-23 22-41-48.png (57.7 KiB) 2222 mal betrachtet
Gruß Garfield

Warf
Beiträge: 2210
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Einbinden der libbass.so

Beitrag von Warf »

Ich habe im Wiki nochmal nachgeschaut, damit die Projektdatei auch bei anderen Leuten funktioniert kannst du Vermutlich die IDE Macros verwenden, um genau zu sein wäre Vermutlich "$(ProjPath)" für dich relevant, das ist der Ordner in dem die LPI liegt.

Das heißt, sagen wir mal deine Projektstruktur ist:

Code: Alles auswählen

<Project>/bin/Application # Zielverzeichnis der Anwendung
<Project>/lib/libbass.so # deine libraries
<Project>/src/xyz.pas # Deine Source dateien
<Project>/MyProject.lpi # LPI Datei des Projekts
Dann wäre der Pfad für in den Start Parametern einzutragen einfach "$(ProjPath)/lib". Wenn du die LPI in einem Unterverzeichnis hast wie "<Project>/src/MyProject.lpi" dann einfach als Relativer Pfad: "$(ProjPath)/.../lib"

Unter Projekteinstellungen -> Pfade kannst du auch den Buildpfad der Anwendung konfigurieren das sie direkt in das bin verzeichnis gebaut wird. Ich hab ein Testprojekt angehängt in dem ich das mal so eingerichtet hab. Wenn ich nix falsch gemacht hab müsstest du es einfach runterladen können und sowohl aus Lazarus als auch über das Startscript starten können :)
Dateianhänge
test.zip
(213.98 KiB) 326-mal heruntergeladen

Benutzeravatar
Garfield
Beiträge: 184
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 24.04 LTS (Laz 4.2 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Einbinden der libbass.so

Beitrag von Garfield »

$(ProjPath) ist ein sehr guter Tipp. Das funktioniert in meinem Projekt. Nur Dein Test-Projekt will irgendwie nicht bei mir. Ich finde nur keinen Unterschied und bei writeln passiert hier nichts. Also nicht nur in dem Testprojekt.
Gruß Garfield

Antworten