FFI::Library - Perl Access to Dynamically Loaded Libraries
version 1.15
# call function from arbitrary dynamic library use FFI::Library; $lib = FFI::Library->new("mylib"); $fn = $lib->function("fn", "signature"); $ret = $fn->(...); # call function from libc $clib_file = ($^O eq "MSWin32") ? "MSVCRT40.DLL" : "-lc"; $clib = FFI::Library->new($clib_file); $strlen = $clib->function("strlen", "cIp"); $n = $strlen->($my_string);
NOTE: Newer and better maintained FFI modules such as FFI::Platypus provide more functionality and so it is strongly recommend that you use one of them for new projects and even consider migrating to one of them for existing projects.
This module provides access from Perl to functions exported from dynamically linked libraries. Functions are described by signatures
, for details of which see the FFI module's documentation.
my $lib = FFI::Library->new($libname);
Creates an instance of FFI::Library
.
my $address = $lib->address($function_name);
Returns the symbol of the given function. Returns undef
if the symbol is not found.
my $sub = $lib->function($function_name, $signature);
Creates a code-reference like object which you can call.
$clib_file = ($^O eq "MSWin32") ? "MSVCRT40.DLL" : "-lc"; $clib = FFI::Library->new($clib_file); $strlen = $clib->function("strlen", "cIp"); $n = $strlen->($my_string);
Please open any support tickets with this project's GitHub repository here:
https://github.com/Perl5-FFI/FFI/issues
Low level interface to ffcall that this module is based on
Portable functions for finding libraries.
Platypus is another FFI interface based on libffi. It has a more extensive feature set, and libffi has a less restrictive license.
Original author: Paul Moore <gustav@morpheus.demon.co.uk>
Current maintainer: Graham Ollis <plicease@cpan.org>
Contributors:
Anatoly Vorobey <avorobey@pobox.com>
Gaal Yahas <gaal@forum2.org>
Mitchell Charity <mcharity@vendian.org>
Reini Urban <<RURBAN@cpan.org>
This software is copyright (c) 2016-2018 by Graham Ollis.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.