I have a huge gl.pxd
file with all the definitions of gl.h
, glu.h
and glut.h
. For example it has these lines:
cdef extern from '<OpenGL/gl.h>':ctypedef unsigned int GLenumcdef void glBegin( GLenum mode )
I have a window.pyx
file, which looks like this:
# Import OpenGL definitions
# headers of gl, glu and glut
from gl cimport *cdef int argcp
cdef char **argvcdef void render_scene():glClear( GL_COLOR_BUFFER_BIT )glBegin( GL_TRIANGLES )glVertex2f( -.5, -.5)glVertex2f( .5, 0 )glVertex2f( 0, -5. )glEnd()glutSwapBuffers()cpdef main():# Initialize GLUT and create WindowglutInit( &argcp, argv )glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE )glutInitWindowPosition( 100, 100 )glutInitWindowSize( 1280, 720 )glutCreateWindow( 'My Shiny New Window' )# Register callbacksglutDisplayFunc( render_scene )# Enter GLUT event processing cycleglutMainLoop()
I also have a setup.py
which looks like this:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_extsetup(cmdclass = {'build_ext': build_ext},ext_modules = [Extension('window', ['window.pyx'])]
)
Which I call with python3 setup.py build_ext --inplace
and it compiles, and the output is this:
running build_ext
cythoning window.pyx to window.c
building 'window' extension
/usr/bin/clang -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3 -arch i386 -arch x86_64 -I/Library/Frameworks/Python.framework/Versions/3.3/include/python3.3m -c window.c -o build/temp.macosx-10.6-intel-3.3/window.o
/usr/bin/clang -bundle -undefined dynamic_lookup -arch i386 -arch x86_64 -g build/temp.macosx-10.6-intel-3.3/window.o -o /Users/petervaro/cygl/window.so
And I have a window_test.py
which looks like this:
import window
window.main()
But if I want to run this python snippet I got this error:
Traceback (most recent call last):File "/Users/petervaro/cygl/window_test.py", line 3, in <module>import window
ImportError: dlopen(/Users/petervaro/cygl/window.so, 2): Symbol not found: _glBeginReferenced from: /Users/petervaro/cygl/window.soExpected in: flat namespacein /Users/petervaro/cygl/window.so
My problem is really similar to this one: What is the meaning of this ImportError when importing a Cython generated .so file? -- although afaik I don't have an external library, I want to use the builtin OpenGL lib...
Oh, and I'm on Mac OS X 10.8.5, Cython 19.2 and Python 3.3. Any help will be appreciated!
Thanks in advance!