NAME
FFI::Library - Perl Access to Dynamically Loaded Libraries
VERSION
version 1.14
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
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.
Newer and better maintained FFI modules such as FFI::Platypus provide more functionality and should probably be considered for new projects.
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.