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.