From: Johannes Beck

Subject: Re: foreign call interface

Date: 1999-12-8 4:34

Hi,

> I am trying to call a c function with an argument passed by address. > Reading the documentation in > file:/usr/local/acl5/doc/cl/foreign_functions.htm#5.1, > Modifying arguments called by address: use arrays > I found the example: > > (ff:def-foreign-call `itimes2 ((simple-array fixnum (1))) > :convention :fortran :returning :void) > > However, changing the obvious mistakes to: > > (ff:def-foreign-call itimes2 ((dice (simple-array fixnum (1)))) > :convention :c :returning :void) > > I get the error: > > Error: don't know how to convert type: (SIMPLE-ARRAY FIXNUM (1)) > [condition type: SIMPLE-ERROR]
IMO the given example has more mistakes than the ones you already detected. I think it should look like this (although I didnt test it): (ff:def-foreign-call itimes2 ((dice ;;; Name of the Argument (* :unsigned-byte) ;;; The foreign argument is a ;;; pointer to some numbers (simple-array fixnum (1))) ;;; which should be converted to the ;;; LISP type simple-array of fixnum ) :convention :c :returning :void) Hope that helps Joe -- Johannes Beck beck at informatik.uni-wuerzburg.de PGP Public Key available by <www-info6.informatik.uni-wuerzburg.de at finger://beck>