RosettaCodeData/Task/Call-a-function-in-a-shared-library/Ol/call-a-function-in-a-shared-library-2.ol
2023-07-01 13:44:08 -04:00

13 lines
370 B
Text

(import (otus ffi))
(define self (load-dynamic-library #f))
(define strdup
(let ((strdup (self type-vptr "strdup" type-string))
(free (self fft-void "free" type-vptr)))
(lambda (str)
(let*((dupped (strdup str))
(result (vptr->string dupped)))
(free dupped)
result))))
(print (strdup "Hello World!"))