[Cuis-dev] I need some advice with FFI

Juan Vuletich juan at jvuletich.org
Sun Nov 7 12:43:13 PST 2021


On 11/6/2021 3:01 PM, Nicola Mingotti via Cuis-dev wrote:
> Hi guys,
>
> I was trying to develop my first FFI calls in Cuis today but
> I am stuck, i hope some of you can give me some guidance.
>
> In the attached package there are implemented 2 foreign functions
> TestClass (class) >> time         # working
> TestClass (class) >> localtime    # broken
>
> ---- interactions ----------
> TestClass time.                                      " ok "
> TestClass localtime2: (TestClass time).              " broken "
> -----------------------------
>
> The error i get is "can not use integer as pointer".
>
> Any ideas ?
>
> bye
> Nicola
>

The C declaration says argument is a pointer, but you are passing an 
integer. If you want a pointer, you need to set up a byte array with the 
correct bytes, and pass that. The FFI will pass the pointer.

There are several packages using FFI you can use as examples of working 
code. I'm pretty sure there is a lot of documentation on Squeak / Cuis 
FFI if you google a bit. As general advice, I'd say that if you really 
need FFI, it is best to spend the time in reading about it and playing 
with existing code. You'll have to spend at least several hours on that. 
But if you can live in the the happy Smalltalk land instead, it is of 
course easier.

Also, depending on your needs, and the availability of time to spend on 
this, you might prefer a VM plugin: It builds the C stack for you.

HTH,

-- 
Juan Vuletich
www.cuis-smalltalk.org
https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
https://github.com/jvuletich
https://www.linkedin.com/in/juan-vuletich-75611b3
@JuanVuletich

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20211107/878d6449/attachment.htm>


More information about the Cuis-dev mailing list