Subject: Re: [ruby-ffi] Re: Multiple libraries included via dlopen()? |
From: Wayne Meissner |
Date: 12/16/10 9:46 PM |
To: ruby-ffi@googlegroups.com |
On 17 December 2010 11:46, mjmac <mjmac42@gmail.com> wrote:
By default, FFI loads libraries as :lazy, :local so symbols are not exported into the global namespace.Sweet! I hackported this from master to 0.6.3 and it works perfectly. I'm still prototyping so this is a workable solution for now.
You probably don't need to backport all the machinery in ffi_lib_flags and ffi_lib, you can might get away with using something like: GlobalSlurm = DynamicLibrary.open(FFI.map_library_name('slurm'), FFI::DynamicLibrary::RTLD_LAZY | FFI::DynamicLibrary::RTLD_GLOBAL) That should re-open the library as global. (storing it in a constant just keeps the library handle alive, and hence from being closed when GC is performed).