# File lib/ffi/library.rb, line 4 def ffi_lib(*names) ffi_libs = [] errors = {} names.each do |name| [ name, FFI.map_library_name(name) ].each do |libname| begin lib = FFI::DynamicLibrary.open(libname, FFI::DynamicLibrary::RTLD_LAZY | FFI::DynamicLibrary::RTLD_GLOBAL) if lib ffi_libs << lib break end rescue Exception => ex errors[name] = ex end end end if ffi_libs.empty? msgs = [] errors.each {|name, ex| msgs << "Failed to load library '#{name}': #{ex.message}" } raise LoadError.new(msgs.join('\n')) end @ffi_libs = ffi_libs end