Hi,

I was trying to get the C++ cython example described in the docs (
http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html) to build in
Sage 4.8, but I'm getting some errors I don't understand.  I created a
separate development branch called "sage-c_extensions", added extension
lines

    Extension('sage.quadratic_forms.rectangle',
              sources = ['sage/quadratic_forms/rectangle/rectangle.pyx',
                         'sage/quadratic_forms/rectangle/Rectangle.cpp'],
              language = "c++"),

in the file sage-c_extensions/sage/module_list.py, copied the Rectangle.h
and Rectangle.cpp files from the tutorial into a new
folder sage-c_extensions/sage/quadratic_forms/rectangle/, and created a
rectangle.pyx file in that folder with contents

cdef extern from "Rectangle.h" namespace "shapes":
    cdef cppclass Rectangle:
        Rectangle(int, int, int, int)
        int x0, y0, x1, y1
        int getLength()
        int getHeight()
        int getArea()
        void move(int, int)


cdef class PyRectangle:
    cdef Rectangle *thisptr      # hold a C++ instance which we're wrapping
    def __cinit__(self, int x0, int y0, int x1, int y1):
        self.thisptr = new Rectangle(x0, y0, x1, y1)
    def __dealloc__(self):
        del self.thisptr
    def getLength(self):
        return self.thisptr.getLength()
    def getHeight(self):
        return self.thisptr.getHeight()
    def getArea(self):
        return self.thisptr.getArea()
    def move(self, dx, dy):
        self.thisptr.move(dx, dy)


When I run "./sage -br c_extensions" I get the error message

Updating Cython code....
Building modified file sage/quadratic_forms/rectangle/rectangle.pyx.
Executing 1 command (using 1 thread)
python `which cython` --cplus --old-style-globals
--disable-function-redefinition --embed-positions --directive
cdivision=True,autotestdict=False,fast_getattr=True
-I/Users/jonhanke/Dropbox/SAGE/sage-4.8/devel/sage-c_extensions -o
sage/quadratic_forms/rectangle/rectangle.cpp
sage/quadratic_forms/rectangle/rectangle.pyx
sage/quadratic_forms/rectangle/rectangle.pyx -->
/Users/jonhanke/Dropbox/SAGE/sage-4.8/local/lib/python2.6/site-packages//sage/quadratic_forms/rectangle/rectangle.pyx
Time to execute 1 command: 16.2038929462 seconds
Finished compiling Cython code (time = 31.5890960693 seconds)
running install
running build
running build_py
running build_ext
building 'sage.quadratic_forms.rectangle' extension
Executing 1 command (using 1 thread)
gcc -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall
-Wstrict-prototypes -I/Users/jonhanke/Dropbox/SAGE/sage-4.8/local/include
-I/Users/jonhanke/Dropbox/SAGE/sage-4.8/local/include/csage
-I/Users/jonhanke/Dropbox/SAGE/sage-4.8/devel/sage/sage/ext
-I/Users/jonhanke/Dropbox/SAGE/sage-4.8/local/include/python2.6 -c
sage/quadratic_forms/rectangle/rectangle.cpp -o
build/temp.macosx-10.6-i386-2.6/sage/quadratic_forms/rectangle/rectangle.o
-w
cc1plus: warning: command line option "-Wstrict-prototypes" is valid for
C/ObjC but not for C++
gcc -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall
-Wstrict-prototypes -I/Users/jonhanke/Dropbox/SAGE/sage-4.8/local/include
-I/Users/jonhanke/Dropbox/SAGE/sage-4.8/local/include/csage
-I/Users/jonhanke/Dropbox/SAGE/sage-4.8/devel/sage/sage/ext
-I/Users/jonhanke/Dropbox/SAGE/sage-4.8/local/include/python2.6 -c
sage/quadratic_forms/rectangle/Rectangle.cpp -o
build/temp.macosx-10.6-i386-2.6/sage/quadratic_forms/rectangle/Rectangle.o
-w
cc1plus: warning: command line option "-Wstrict-prototypes" is valid for
C/ObjC but not for C++
g++ -L/Users/jonhanke/Dropbox/SAGE/sage-4.8/local/lib -bundle -undefined
dynamic_lookup
build/temp.macosx-10.6-i386-2.6/sage/quadratic_forms/rectangle/rectangle.o
build/temp.macosx-10.6-i386-2.6/sage/quadratic_forms/rectangle/Rectangle.o
-L/Users/jonhanke/Dropbox/SAGE/sage-4.8/local/lib -lcsage -lstdc++ -lntl -o
build/lib.macosx-10.6-i386-2.6/sage/quadratic_forms/rectangle.so
ld: duplicate symbol _initrectangle in
build/temp.macosx-10.6-i386-2.6/sage/quadratic_forms/rectangle/Rectangle.o
and
build/temp.macosx-10.6-i386-2.6/sage/quadratic_forms/rectangle/rectangle.o
collect2: ld returned 1 exit status
error: command 'g++' failed with exit status 1
sage: There was an error installing modified sage library code.


Any comments are appreciated.  Also, it seems that Cython converts the
Rectangle.cpp file to a "cythoned" file rectangle.cpp, deleting the
original file in the process.  Is this normal/ok?

Thanks,

-Jon
 =)

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to