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