、およびgl.pxd
のすべての定義を含む巨大なファイルがあります。たとえば、次の行があります。gl.h
glu.h
glut.h
cdef extern from '<OpenGL/gl.h>':
ctypedef unsigned int GLenum
cdef void glBegin( GLenum mode )
次のようなファイルがありwindow.pyx
ます。
# Import OpenGL definitions
# headers of gl, glu and glut
from gl cimport *
cdef int argcp
cdef char **argv
cdef 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 Window
glutInit( &argcp, argv )
glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE )
glutInitWindowPosition( 100, 100 )
glutInitWindowSize( 1280, 720 )
glutCreateWindow( 'My Shiny New Window' )
# Register callbacks
glutDisplayFunc( render_scene )
# Enter GLUT event processing cycle
glutMainLoop()
setup.py
次のようなものもあります。
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
setup(
cmdclass = {'build_ext': build_ext},
ext_modules = [Extension('window', ['window.pyx'])]
)
これを呼び出しpython3 setup.py build_ext --inplace
てコンパイルすると、出力は次のようになります。
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
そして、私はwindow_test.py
次のようなものを持っています:
import window
window.main()
しかし、この python スニペットを実行したい場合、次のエラーが発生しました。
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: _glBegin
Referenced from: /Users/petervaro/cygl/window.so
Expected in: flat namespace
in /Users/petervaro/cygl/window.so
私の問題はこれとよく似ています: Cython で生成された .so ファイルをインポートするときのこの ImportError の意味は何ですか? --外部ライブラリはありませんが、組み込みのOpenGLライブラリを使用したい...
ああ、私は Mac OS X 10.8.5、Cython 19.2、および Python 3.3 を使用しています。どんな助けでも大歓迎です!
前もって感謝します!