如何在Mac OSX上使用distutils通过Python C++扩展编译OpenGL?

25

尝试时出现以下错误:

ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/cscalelib.so, 2): Symbol not found: _glBindFramebufferEXT Referenced from: /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/cscalelib.so Expected in: dynamic lookup

我已经尝试了安装setup.py文件中的各种方法。我需要在其中放置什么才能正确链接OpenGL?我的代码编译得很好,所以没有必要将其放在那里。

from distutils.core import setup, Extension

module1 = Extension('cscalelib',
              extra_compile_args = ["-framework OpenGL", "-lm", "-lGL", "-lGLU"],
                    sources = ['cscalelib.cpp'])

setup (name = 'cscalelib',
       version = '0.1',
       description = 'Test for setup_framebuffer',
       ext_modules = [module1])

你当前的链接方法是什么样的? - Georg Fritzsche
3
实际执行的编译器命令是什么?(如果默认情况下没有显示,“python setup.py build -v”应该能够显示。如果不需要重新编译任何内容,则删除“build”目录。)“-framework”似乎是一个链接器选项,而不是编译器选项,所以您应该将其放在“extra_link_args”中--但我不知道它是否有影响。 - Thomas Wouters
3
我原来没有意识到需要删除构建目录。现在它可以正确导入了。谢谢你提供的帮助。对于任何需要知道的人,你需要:extra_link_args=['-framework', 'OpenGL']删除构建目录,然后再试一次。它会正常工作。 - Matthew Mitchell
不确定这是否有帮助,Python确实有一个pyOPENGL绑定。 - zinking
5
@ThomasWouters,我觉得你回答了这个问题。也许你可以把你的评论转化为答案,这样问题就能被接受了,这样它就不会一直出现在未回答的问题列表中。 - MvG
显示剩余2条评论
1个回答

4

我没有意识到需要删除构建目录。现在它可以正确导入。

对于任何需要了解的人,您需要: extra_link_args = ['-framework', 'OpenGL'] 删除构建目录并再次尝试。它会起作用的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接