Hi Annick, you can't pass smalltalk strings or objects to ffi as parameters, you have to allocate the buffer member of your structure on the external heap ( plus to avoid being gc'd before ffi call) with ExternalAddress allocate: <your buffer/string size +1 for string null termination> fill your buffer with byteAt:put: method, and release this memory with free when you have finished. not sure, but you could try something like: s := '05:45' copyWith: (Character value: 0). a := ExternalAddress allocate: s size. s asByteArray withIndexDo: [ :b :i | a byteAt: i put: b ]. myStruct time: a. ... call your ffi ... a free Regards, Alain Le 29/10/2014 11:59, Annick Fron a écrit :
I I have a C struct with a char*
struct result { char* time }
I define an ExternalStructure in FFI , with one field of type char* (note that the syntax char [5] is not accepted ! ).
defineFields generates the accessors time and time:
If I use time: â05:45â
I get an error. How do I set a string value in an ExternalStructure ?
Annick