Hi everybody,
I have a problem that I was not able to resolve with the manual.
I have the following C function (which is a trimmed down version of a C++ wrapper):
extern "C" {
void tryit(const int *ints, unsigned count) { for(unsigned i=0; i<count; i++) { cerr << "index " << i << ": " << ints[i] << "\n"; } }
} /* extern "C" */
Now I want to call it with an array that is allocated and initialized on the Lisp side:
(defcfun ("tryit" try-it) :void (vars :pointer) (count :unsigned-int))
(defun test () (let* ((l (list 1 2 3)) (len (length l)) (i 0)) (with-foreign-object (idx :int len) (map nil (lambda (x) (setf (mem-ref idx :int i) x) (incf i)) l) (try-it idx len))))
I'm quite convinced that this should now print 1,2,3 to cerr for the corresponding indices. However, I get the following:
index 0: 197121 index 1: 0 index 2: 6581024
Any insight on what I'm doing wrong is greatly appreciated.
Best regards, Stephan