NAME
FFI::Library - Perl Access to Dynamically Loaded Libraries
VERSION
version 1.15
SYNOPSIS
# 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);
DESCRIPTION
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.
CONSTRUCTOR
new
my $lib = FFI::Library->new($libname);
Creates an instance of FFI::Library
.
FUNCTIONS
address
my $address = $lib->address($function_name);
Returns the symbol of the given function. Returns undef
if the symbol is not found.
function
my $sub = $lib->function($function_name, $signature);
Creates a code-reference like object which you can call.
EXAMPLES
$clib_file = ($^O eq "MSWin32") ? "MSVCRT40.DLL" : "-lc";
$clib = FFI::Library->new($clib_file);
$strlen = $clib->function("strlen", "cIp");
$n = $strlen->($my_string);
SUPPORT
Please open any support tickets with this project's GitHub repository here:
https://github.com/Perl5-FFI/FFI/issues
SEE ALSO
- FFI
-
Low level interface to ffcall that this module is based on
- FFI::CheckLib
-
Portable functions for finding libraries.
- FFI::Platypus
-
Platypus is another FFI interface based on libffi. It has a more extensive feature set, and libffi has a less restrictive license.
AUTHOR
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>
COPYRIGHT AND LICENSE
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.