Hi,
       I am also trying to use a function inside the static library
libX11.a - the XLookupString function. This function is declared in
Xutil.h in the X11 directory. I used the options of LIBS => '-lX11' , INC
=> '/usr/include/X11' where the libX11.a is stored in my current
directory. I also used #include <X11/Xutil.h> in the C code. But the
out.Makefile.PL in the build directory says that -lX11 library was not
found, and I get an error saying XLookupString is not defined. A similar C
code with same compilation options works. Can someone help ?

Thanks,
Vikram

Sisyphus wrote:

> SALAT Jérémy wrote:
> > Hello,
> > 
> > I try to use inline in the objective of  using a c function present in a
dynamic lib (.so), which uses a static lib (.a). 
> > 

> Suppose libyourlib contains a function called 'multiply' which takes 2 
> arguments of type int and returns a int. You could access it with 
> Inline::C as follows:

> use Inline C => Config =>
>      LIBS => '-L/path/to/the_static_lib -lyourlib';

> use Inline C => <<'EOC';

> #include "yourlib.h"

> int wrap_multiply(int a, int b) {
>      return multiply(a,b);
>      }

> EOC

> my $x = 17;
> my $y = 123;

> print wrap_multiply($x, $y);

> __END__

> And, so long as libyourlib.so was able to be found, that Inline script 
> should work fine (typing errors aside :-).

> For other (more complex) return and argument types, things might not be 
> so simple.
> Take a good look through 'perldoc Inline::C-Cookbook', 'perldoc 
> perlapi', and 'perldoc perlclib'.

> What you'll probably be doing is mostly writing  "wrapper" functions for 
> the functions in your library.

> Cheers,
> Rob


Reply via email to