Einzelnen Beitrag anzeigen

Wal

Registriert seit: 22. Sep 2006
57 Beiträge
 
#17

Re: DLL einbinden octopus.dll

  Alt 25. Jul 2008, 20:11
Zitat von multi-man:
Zitat von Wal:
Den Delphi-Wrapper findest du hier: Delphi Header für LibUSB

Evtl. bringt dich das weiter.

Wal
Leider nicht wirklich ..
Ich habe mal die LibUSB.pas mit in mein Testprogramm aufgenommen, aber leider passiert dabei das selbe ...

Chris
Du hast mich falsch verstanden, du sollst den Header nicht einbinden. Sondern die Dateien vergleichen um die Variabeln-Typen herauszubekommen.

Meiner Meinung müßte das so gehen:

Delphi-Quellcode:

type
  octopus_context = packed record
    usb_handle : pointer;
    error_str : pchar;
  end;
  Poctopus_context = ^octopus_context;


function octopus_init(var context: octopus_context): integer; external 'octopus.dll';
function octopus_open(context: octopus_context): integer; external 'octopus.dll';


var context:Poctopus_context;
 
begin
  new(context);
  try
    if octopus_init(context) = 0 then
      raise Exception.Create(context.error_str);

    if octopus_open(context) < 0 then
      raise Exception.Create(context.error_str);

  finally
    dispose(context);
  end;
end;
Mit octopus_init bekommst du den Pointer auf das USB_Handle mitgeteilt, den du bei jedem Zugriff auf das USB-Teil brauchst.
Deshalb am besten auch Global deklarieren.
Mit octopus_open übergibst du den Pointer der octopus.dll wieder.
Wenn ich keinen falschen Fehler mache müßte das so ungefähr gehen.
Ich weiß auch nicht genau ob man für den Pointer nicht erst Speicher reservieren muß.

Nur mein Delphi ist halt noch nicht so gut.

Wal
  Mit Zitat antworten Zitat