Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
perl5 C::DynaLib module
Perl C
branch: master


This is C::DynaLib, a Perl 5 FFI for calling C functions.

  use C::DynaLib;
  $libm = new C::DynaLib("-lm");
  $sinh = $libm->DeclareSub("sinh", "d", "d");
  print "The hyperbolic sine of 3 is ", &$sinh(3), "\n";

The module has been tested successfully on iX86, Sparc, and Alpha
machines.  However, there are probably compilers for even these chips
which will require some porting. Please report any problems at

Included are the following packages:

  C::DynaLib            - call a C function from Perl
  C::DynaLib::Callback  - convert a perl sub into a usable
                          C function pointer
  C::DynaLib::Struct    - handle C records nicely. The declaration can be 
			  created automatically from .h excerpts if 
			  Convert::Binary::C is installed
  Asm                   - unsupported whimsical i386 CPU interface
                                     (not installed by default)

To build this module, run the usual

  perl Makefile.PL
  make test

Various things can go wrong.  First, your perl should be of the dynamic
variety.  Be sure you answered "y" when Configure asked, "Do you wish
to use dynamic loading?".  Otherwise, you will still (I think) be able
to create callback pointers and convert a function pointer into a Perl
sub, but you won't be able to do dynamic loading.

gcc stack adjustment changed with gcc-4. This is not fixed yet, so
hack30 must be used.

The biggest issue in porting this module is your system's function
call interface.  If Makefile.PL prints that it is using `hack30', it
is a sign that your system is not yet supported.  Another sign of
trouble is when `make test' prints `not ok' or `Illegal memory
operation'.  Further documentation in pod format is in

The callback feature has sometimes caused grief in building the
module.  If Makefile.PL writes a makefile but you can't get it to
build, try `perl Makefile.PL CALLBACKS=0' followed by `make test',
and report of your success or failure.


The files named in MANIFEST, accompanying this file, are Copyright (c)
1997, 2000 by John Tobey.  All rights reserved.  They may be modified,
distributed and used under the same conditions as Perl itself.  Of
course, there is no express or implied warranty.  See the file README
in the top-level Perl source directory for more information.

-John and 
Reini Urban <>
Something went wrong with that request. Please try again.