Da ich mir auch so ein Teil bestellt habe, verfolge ich das hier auch gespannt. Dein Fehler hat nicht's mehr mit der Octopus.dll zu tun sondern mit der libusb.dll. Habe mir mal den Delphi-Wrapper für die libusb.dll angeschaut und festgestellt,das der usb_handle kein integer ist, sondern ein Pointer. siehe Antwort von Omata.
Delphi-Quellcode:
usb_device = packed record
next,
prev: pusb_device;
filename: packed array [0..LIBUSB_PATH_MAX-1] of char;
bus: pusb_bus;
descriptor: usb_device_descriptor;
config: PArray_usb_config_descriptor;
dev: pointer; // Darwin support
end;
usb_bus = packed record
next,
prev: pusb_bus;
dirname: packed array [0..LIBUSB_PATH_MAX-1] of char;
devices: pusb_device;
location: longint;
end;
// Version information, Windows specific
pusb_version = ^usb_version;
usb_version = packed record
dllmajor,
dllminor,
dllmicro,
dllnano: integer;
drivermajor,
driverminor,
drivermicro,
drivernano: integer;
end;
pusb_dev_handle = pointer; // struct usb_dev_handle;
// typedef struct usb_dev_handle usb_dev_handle;
Den Delphi-Wrapper findest du hier:
Delphi Header für LibUSB
Evtl. bringt dich das weiter.
Wal
P.S.
Luckie hat geschrieben:
Delphi-Quellcode:
function octopus_init(var context: octopus_context): integer; external 'octopus.dll';
function octopus_get_hwdesc(var context: octopus_context; desc: Pchar): Pchar; external 'octopus.dll';
function octopus_open(context: octopus_context): integer; external 'octopus.dll';
Mit octupus_init wird ja der Pointer geholt, deshalb wird das var wichtig sein und mit octupus_open wird der Pointer wieder der
Dll mitgeteilt.
Bin noch nicht der Delphifreak, deshalb berichtigt mich falls ich falsch liege.