FFI & MacOS X
Javier Diaz-Reinoso
javier_diaz_r at mac.com
Thu Jun 10 22:08:58 UTC 2004
I am using FFI in MacOSX, I simple create a framework in XCode then
move the framework xxx.framework to /System/Library/Frameworks , this
is a workaround because the other more correct locations:
/Library/Frameworks or ~/Library/Frameworks are not working with the
current VM.
In Squeak you define (for example):
macCallWith: ba with: res
<cdecl: long 'testVF' (VFExternalStructure* VFExternalStructure*)
module:'vftest.framework'>
^self externalCallFailed
Where VFExternalStructure is for example a subclass of ExternalData (or
the other classes defined in FFI-Kernel).
Then call with (more examples):
ba _ ByteArray new: 3456 withAll: 0.
res _ ByteArray new: 2800 withAll: 0.
[init data, etc...]
pba _ VFExternalStructure fromHandle: ba type: ExternalType char.
pres _ VFExternalStructure fromHandle: res type: ExternalType char.
pBuff _ self macCallWith: pba with: pres.
This example is using ByteArrays (char* in C) you need to change with
the other types of (external) data.
On 10/06/2004, at 11:02, Diego Tiscornia wrote:
> John M McIntosh writes:
>>
>> I'm sure I read somewhere is that the function call we make to get the
>> address for a function name
>> doesn't care if it's a bundle or dylib, or something. It does the
>> right
>> thing to resolve the address.
>>
>> On Jun 9, 2004, at 10:28 PM, diego bart wrote:
>>
>>> In order to test I wrote a small example and compiled it both .bundle
>>> and .dylib following apple examples. I get the message "cannot find
>>> function
>>> address".I can use them from C via the NS way (bundle) and linking to
>>> a dylib,
>>> but cant get sq to find the symbols :(
>
>
> Hi thank you for answering.
>
> I already had SqueakFFIPrims.bundle.
> I think it came with the Carbon version, and the FFI examples work,
> but I can't get anything else to work with it :(
> I think I would get the "no function callout mechanism available"
> (or similar) exception hadn't I gotten the lib,
> at least this is what happens when you delete it.
>
> Anyway I just in case downloaded the version you mentioned,
> but it doesnt work either :(
>
>
>
>
>
>
>
>
Javier Diaz-Reinoso
Web: http://homepage.mac.com/javier_diaz_r/
More information about the Squeak-dev
mailing list
|