Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Perl Module using XS

1 view
Skip to first unread message

Rajan S

unread,
May 3, 2008, 5:09:58 PM5/3/08
to
Hello "XS Gurus":
I am trying to develop a perl extension using XS that would execute a DB2's
'.sqc' generated c executable.( equivalent of Oracle's pro*c generated
executable). The 'C' executable executes fine by itself. I am having a hard
time getting the perl module work.
I added in the '.xs' file the Xsubb for the function that is declared in the
'C' program.
In the Makefile.PL, I added the object files generated from the 'C' program
and also the path where the object file can be fouind.
Still, the make process does not succeed in building the 'C' function into
the Perl module.
Could anyone show pointers as to what i am missing
thanks
Rajan


use 5.008008;
use ExtUtils::MakeMaker;
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile(
NAME => 'RajanT',
VERSION_FROM => 'lib/RajanT.pm', # finds $VERSION
PREREQ_PM => {}, # e.g., Module::Name => 1.1
($] >= 5.005 ? ## Add these new keywords supported since 5.005
(ABSTRACT_FROM => 'lib/RajanT.pm', # retrieve abstract from module
AUTHOR => 'Abishek Rajan <a...@suse.de>') : ()),
LIBS => [''], # e.g., '-lm'
DEFINE => '', # e.g., '-DHAVE_SOMETHING'
INC => '-I. -I/home/db2inst2', # e.g.,
'-I. -I/usr/include/other'
MYEXTLIB => 'rlib/libmylib$(LIB_EXT)',
# Un-comment this if you add C files to link with later:
OBJECT => '$(example2.o)', # link all the C files
too
);
if (eval {require ExtUtils::Constant; 1}) {
# If you edit these definitions to change the constants used by this module,
# you will need to use the generated const-c.inc and const-xs.inc
# files to replace their "fallback" counterparts before distributing your
# changes.
my @names = (qw(TESTVAL));
ExtUtils::Constant::WriteConstants(
NAME => 'RajanT',
NAMES => \@names,
DEFAULT_TYPE => 'IV',
C_FILE => 'const-c.inc',
XS_FILE => 'const-xs.inc',
);
}
else {
use File::Copy;
use File::Spec;
foreach my $file ('const-c.inc', 'const-xs.inc') {
my $fallback = File::Spec->catfile('fallback', $file);
copy ($fallback, $file) or die "Can't copy $fallback to $file: $!";
}
}

sub MY::postamble {
'
$(MYEXTLIB): rlib/Makefile
cd rlib && $(MAKE) $(PASSTHRU)
';

Ilya Zakharevich

unread,
May 5, 2008, 8:31:22 PM5/5/08
to
[A complimentary Cc of this posting was sent to
Rajan S
<sra...@cox.net>], who wrote in article <L%4Tj.31191$KJ1....@newsfe19.lga>:

> Hello "XS Gurus":
> I am trying to develop a perl extension using XS that would execute a DB2's
> '.sqc' generated c executable.( equivalent of Oracle's pro*c generated
> executable). The 'C' executable executes fine by itself. I am having a hard
> time getting the perl module work.
> I added in the '.xs' file the Xsubb for the function that is declared in the
> 'C' program.
> In the Makefile.PL, I added the object files generated from the 'C' program
> and also the path where the object file can be fouind.
> Still, the make process does not succeed in building the 'C' function into
> the Perl module.
> Could anyone show pointers as to what i am missing

A way to ask meaningful (meaning sufficiently complete) questions?

Hope this helps,
Ilya

Sherman Pendley

unread,
May 6, 2008, 11:20:43 AM5/6/08
to
"Rajan S" <sra...@cox.net> writes:

> I am trying to develop a perl extension using XS that would execute a DB2's
> '.sqc' generated c executable.( equivalent of Oracle's pro*c generated
> executable).

...

> Could anyone show pointers as to what i am missing

DBI. Connecting to Oracle from Perl is a problem that was solved a long,
long time ago.

sherm--

--
My blog: http://shermspace.blogspot.com
Cocoa programming in Perl: http://camelbones.sourceforge.net

0 new messages