DynamicLibrary for unix

Brian Rice water at tunes.org
Tue Nov 2 11:16:42 PST 2004


This is now incorporated, albeit as ExternalLibrary instead. Lee has 
also provided a tentative (needs actual testing) stub for the Windows 
platform. Thanks!

On Oct 27, 2004, at 10:23 AM, Brian Rice wrote:

> Excellent! I'll start going over the code for incorporation purposes. 
> It should also be interesting if we can use the pidgin tools to 
> generate C code for us as well.
>
> On Oct 27, 2004, at 9:59 AM, Tony Garnock-Jones wrote:
>
>> Hi all.
>>
>> Attached is a patch implementing a DynamicLibrary object which allows 
>> the use of .so files containing primitives, which are loaded into the 
>> VM at runtime. It's quite basic, but so far code like this works:
>>
>> [| d h |
>>
>>   d: (DynamicLibrary newNamed: 'testplugin').
>>   h: (d lookup: 'addSmallInts').
>>   (h applyWith: 3 with: 4) printOn: Console writer.
>>   Console ; '\n'.
>> ] do.
>>
>>
>> when run against a plugin like this one:
>>
>> /* libtool --mode=compile gcc -o testplugin.lo -c testplugin.c */
>> /* libtool --mode=link gcc -module -o testplugin.la testplugin.lo
>>      -rpath `pwd` */
>> #include "slatevm.h"
>>
>> ObjectPointer addSmallInts(ObjectPointer *argv, unsigned long int 
>> argc) {
>>   signed long int a = ObjectPointer_asSmallInt(argv[0]);
>>   signed long int b = ObjectPointer_asSmallInt(argv[1]);
>>   return signedLongInt_asObject(a + b);
>> }
>>
>>
>> So far I've tried it on Debian Linux on x86 and Macos X on PPC. 
>> Porting to Windows ought to be trivial: instead of 
>> dlopen/dlsym/dlclose from dlfcn.h, use 
>> LoadLibrary/GetProcAddress/FreeLibrary from windows.h. Of course, 
>> I've no idea what to use instead of libtool on Windows :-)
>>
>> Regards,
>>   Tony
>> <dynlib-patch.tar.gz>
> --
> Brian T. Rice
> LOGOS Research and Development
> http://tunes.org/~water/
>
>
--
Brian T. Rice
LOGOS Research and Development
http://tunes.org/~water/




More information about the Slate mailing list