[Lazarus] Communication USB, Lazarus et MAC OS X

Yan Chengyuan yanchengyuan at gmail.com
Tue May 26 15:15:39 CEST 2009


I'm sorry,but what does 'cdecl' mean?
in fact i know nothing about how to import functions from external
compiled library.
在 2009-05-26二的 14:15 +0200,Mattias Gaertner写道:
> On Tue, 26 May 2009 13:58:14 +0200
> Sébastien FLOURETTE <sebastien.flourette at gmail.com> wrote:
> 
> > Hi,
> > 
> > I need again help !!
> > 
> > I have create a simple library in C compiled with GCC in mylibusb.o
> > 
> > The code is :
> > #include <usb.h>
> > 
> > 
> > myusb_open(usb_dev_handle *udev)
> > {
> >    struct usb_bus *bus;
> >    struct usb_device *dev;
> >    char buff[64];
> >    int i;
> > 
> >    //Initialisation du bus USB
> >    usb_init();
> >    usb_find_busses();
> >    usb_find_devices();
> > 
> >    for (bus = usb_busses; bus; bus = bus->next)
> >    {
> >       for (dev = bus->devices; dev; dev = dev->next)
> >       {
> >          if ((dev->descriptor.idVendor == 0x04D8) &&
> > (dev->descriptor.idProduct == 0x1985))
> >          {
> >             udev = usb_open(dev);
> >          }
> > 
> >            }
> > 
> >        }
> > }
> > 
> > 
> > myusb_close(usb_dev_handle *udev)
> > {
> >    usb_close(udev);
> > }
> > 
> > 
> > myusb_write(usb_dev_handle *udev)
> > {
> >    usb_bulk_write(udev, 0x01, 0x01, 64, 1000);
> > }
> > 
> > 
> > I link this myusblib.o with my lazarus program :
> > 
> > 
> > unit usb_api;
> > 
> > 
> > 
> > interface
> > 
> > 
> >      function myusb_open(udev : thandle);cdecl;
> >      procedure myusb_close(udev : thandle) ; cdecl;
> >      procedure myusb_write(udev : thandle); cdecl;
> 
> Maybe you forgot the 'var':
>   function myusb_open(var udev : thandle);cdecl;
> ?
> 
> I don't know your C macros (who knows?), but are you sure myusb_open is
> a function (or maybe a procedure)?
> 
> 
> > implementation
> > 
> > {$link myusblib.o}
> > {$linklib usb}
> > {$linklib c}
> > {$linklib gcc}
> > 
> > 
> > uses CTypes;
> > 
> > function myusb_open; cdecl; external;
> > procedure myusb_close; cdecl; external;
> > procedure myusb_write; cdecl; external;
> > end.
> > 
> > 
> > 
> > and when I do
> > 
> > var
> > myhost : thandle;
> > 
> > begin
> > myusb_open(myhost);
> > myusb_write(myhost);
> > myusb_close(myhost);
> > end;
> > 
> > I have no communication with my usb board. My libusb.o work with the
> > same program in C.
> > 
> > Have you got an idea on my problem or can you tell me if you have
> > another solutions.
> > 
> > Is it possible to create a library Dll for windows and MAC OS and How
> > can I do it with the libusb library?
> 
> 
> Mattias
> 
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus





More information about the Lazarus mailing list