SWIG Python Extension winth C++ Problematic

Chandrashekhar kaushik shekhar.kaushik at gmail.com
Fri Aug 4 14:47:28 EDT 2006


Hi skip
thanks for replying

I made a small test case that fails with a similar problem
This is how it looks

1. Two simple classes A and B , each holds an integer.
2. A has a function getB() that returns pointer to B.
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\\
#ifndef __AB_H__
#define __AB_H__
class B{
   public:
     int b;
     B( int num = 0 ){
        b = num;
     }
     ~B(){}
};

class A{
   public:
     int a;
     A( int a = 0 ){
        this->a = a;
     }
     ~A(){}
     B* getB(){
       B* temp = new B(a);
       return  temp;
     }
};
#endif __AB_H__
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\\
The swig file is as follows

%module testcase

%{
#include "AB.h"
%}

%include "AB.h"
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\\

Compilation commands

swig-1.3 -c++ -python -o swig.cc swig.i
g++ -c -fPIC swig.cc -o swig.o -I /usr/local/include/python2.1/
g++ -shared swig.o -o _testcase.so

/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\\
Python File

from testcase import *
a = A() # works fine
b = B() # works fine
c = a.getB() # crashes ( Segmentation Fault )

/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\\


See if you can makeout something out of that

--
shekhar

On 8/4/06, skip at pobox.com <skip at pobox.com> wrote:
>
>
>     >> I have been working getting my C++ code to be used in Python (
>     >> Basically Extending ) This is the problem i am facing rite now.
>     >>
>     >> I have a function that returns a Pointer to a class in my C++ Code
>     >>
>     >> It looks like this
>     ...
>     >> I have used SWIG to get the Glue code.
>     >>
>     >> When i call this function ( in python ) and it eventually returns (
>     >> when it gets a connection in this case ) it crashes ! I get a SEG
>     >> FAULT !
>     >>
>     >> Is it some thing that cannot be done ?
>
> I'm certainly no SWIG expert, however:
>
>     1. Is your SLSocket class wrapped with SWIG?  Do you maybe need a
>        typemap?  Can you explicitly create one from Python?  If so, does
>        that work?
>
>     2. What does your SWIG .i file look like?
>
>     3. Finally, have you tried asking on the SWIG mailing list
>        (swig-user at lists.sourceforge.net)?  There are probably many more
> SWIG
>        experts there than here.
>
> Skip
>



-- 
--
shekhar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20060805/bb7f19e8/attachment.html>


More information about the Python-list mailing list