Skip to content

Problem loadLib "libsndfile" on Raspberry5/debian12/lazarus with uos Release v250416 #58

@lucarnet

Description

@lucarnet

Hello,
After successfully using UOS for voice recognition with Vosk on a Raspberry 3B+,
I need to implement the same program on a Raspberry 5/Debian 12.
with uos Release v250416, I'm getting an error loading the libsndfile libraries aarch64...

Any ideas?
Thanks.

uos_libsndfile.pas:
thelib="/home/pi/outils/uos-2250416/examples/lib/Linux/aarch64_raspberrypi/libsndfile_aarch64.so"
the line: sf_Handle := DynLibs.SafeLoadLibrary(thelib); = 0


  function sf_Load(const libfilename: string): boolean;
var
thelib: string; 
begin
  Result := False;
  if sf_Handle <> 0 then
  begin
    Result := True {is it already there ?};
    //Reference counting
    Inc(ReferenceCounter);
  end
  else
  begin {go & load the library}
   if Length(libfilename) = 0 then thelib := libsf else thelib := libfilename;
    sf_Handle := DynLibs.SafeLoadLibrary(thelib); // obtain the handle we want
    if sf_Handle <> DynLibs.NilHandle then
    begin {now we tie the functions to the VARs from above}
      
      Pointer(sf_version_string) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_version_string'));
      Pointer(sf_open_native) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_open'));
      Pointer(sf_open_fd) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_open_fd'));
      Pointer(sf_open_virtual) := DynLibs.GetProcedureAddress(
        sf_Handle, PChar('sf_open_virtual'));
      Pointer(sf_error) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_error'));
      Pointer(sf_strerror) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_strerror'));
      Pointer(sf_error_number) := DynLibs.GetProcedureAddress(
        sf_Handle, PChar('sf_error_number'));
      Pointer(sf_perror) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_perror'));
      Pointer(sf_error_str) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_error_str'));
      Pointer(sf_command_pointer) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_command'));
      Pointer(sf_command_array) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_command'));
      Pointer(sf_command_double) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_command'));
      Pointer(sf_command_tsf) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_command'));
      Pointer(sf_format_check) := DynLibs.GetProcedureAddress(
        sf_Handle, PChar('sf_format_check'));
      Pointer(sf_seek) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_seek'));
      Pointer(sf_set_string) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_set_string'));
      Pointer(sf_get_string) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_get_string'));
      Pointer(sf_read_raw) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_read_raw'));
      Pointer(sf_write_raw) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_write_raw'));
      Pointer(sf_readf_short) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_readf_short'));
      Pointer(sf_writef_short) := DynLibs.GetProcedureAddress(
        sf_Handle, PChar('sf_writef_short'));
      Pointer(sf_readf_int) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_readf_int'));
      Pointer(sf_writef_int) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_writef_int'));
      Pointer(sf_readf_float) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_readf_float'));
      Pointer(sf_writef_float) := DynLibs.GetProcedureAddress(
        sf_Handle, PChar('sf_writef_float'));
      Pointer(sf_readf_double) := DynLibs.GetProcedureAddress(
        sf_Handle, PChar('sf_readf_double'));
      Pointer(sf_writef_double) := DynLibs.GetProcedureAddress(
        sf_Handle, PChar('sf_writef_double'));
      Pointer(sf_read_short) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_read_short'));
      Pointer(sf_write_short) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_write_short'));
      Pointer(sf_read_int) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_read_int'));
      Pointer(sf_write_int) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_write_int'));
      Pointer(sf_read_float) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_read_float'));
      Pointer(sf_write_float) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_write_float'));
      Pointer(sf_read_double) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_read_double'));
      Pointer(sf_write_double) := DynLibs.GetProcedureAddress(
        sf_Handle, PChar('sf_write_double'));
      Pointer(sf_close) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_close'));
      Pointer(sf_write_sync) := DynLibs.GetProcedureAddress(sf_Handle, PChar('sf_write_sync'));

    end;
    Result := sf_IsLoaded;
    ReferenceCounter := 1;
  end;

end;            

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions