Hello everyone,
 
I'm trying to call 'C' routine from perl script. I have static library
(libFile.a) where I can get object code of 
this routine and I have linked it with my perl script. This perl script get
compile but after running it I'm getting
segmentation fault. See code below for reference:
 
=================== C Routine ==================
#include <stdio.h>
#include <string.h>
 
char *  MyMethod(char *data)
{
   strcpy(data,"My text from C Code ");
   return data;
}
steps to get libFile.a:
cc -c libFile.o libFile.c
ar rcs libFile.a libFile.o
 
=========================== PerlScript ==============
package Caller;
use Inline C => Config =>
                ENABLE => AUTOWRAP,
                LIBS => '-L/lib_location -lFile',
                INC => '-I/lib_location'
              ;
use Inline C => <<'END';
char * MyMethod(char *data);
AV* AVstr;
SV* SVstr1;
void DisplayData()
{
    AVstr=newAV();
   // Call to function defined in library
    AVstr =  MyMethod(AVstr);
    printf("\n SVstr1 data: %s\n",AVstr);
}
END
1;
 
use strict;
# call to Function
   Caller::DisplayData();
1;
Compile: perl -c Script_name
run :  perl -w Script_name
 
Do you have any guess why am I getting Segmentation fault? Is this the right
way to pass parameters and 
particularly memory allocation and deallocation?
 
Thanks in advance.

~~~~~~~~~~~~~~~~~~~~

Thanks and Best regards,

~ Rajnikant

Software Engg.

Persistent Sys. Ltd.

Ph. +91 98222 04088

 

DISCLAIMER
==========
This e-mail may contain privileged and confidential information which is the 
property of Persistent Systems Ltd. It is intended only for the use of the 
individual or entity to which it is addressed. If you are not the intended 
recipient, you are not authorized to read, retain, copy, print, distribute or 
use this message. If you have received this communication in error, please 
notify the sender and delete all copies of this message. Persistent Systems 
Ltd. does not accept any liability for virus infected mails.

Reply via email to