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