4
我有一個巨大的gl.pxd
文件,其中包含gl.h
,glu.h
和glut.h
的所有定義。例如,它有這些行:找不到符號,預計於:flat命名空間
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()
但是,如果我想運行這條巨蟒片斷我得到這個錯誤:
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
我的問題是真正與此類似: What is the meaning of this ImportError when importing a Cython generated .so file? - 雖然afaik我沒有外部庫,我想用內建的 OpenGL庫...
哦,我在Mac OS X 10.8.5,Cython 19.2和Python 3.3。 任何幫助將不勝感激!
在此先感謝!