【问题标题】:How to compile OpenGL with a python C++ extension using distutils on Mac OSX?如何在 Mac OSX 上使用 distutils 编译带有 python C++ 扩展的 OpenGL?
【发布时间】:2011-02-14 19:35:54
【问题描述】:

当我尝试时,我得到:

ImportError:dlopen(/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/cscalelib.so,2):找不到符号:_glBindFramebufferEXT 引用自:/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/cscalelib.so 预期于:动态查找

我已经在 setup.py 文件中尝试了各种方法。我实际上需要放入什么才能正确链接到OpenGL?我的代码编译得很好,所以没有必要把它放在那里。这里是 setup.py

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])

【问题讨论】:

  • 您当前的链接方法看起来如何?
  • 那么当前的 setup.py 看起来像: 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]) 我试过很多不同的东西。这是尝试添加许多可能有效的 gcc 参数。
  • 实际执行的编译器命令是什么? ('python setup.py build -v' 应该显示给你,如果默认情况下没有。如果它决定不重建任何东西,请删除 'build' 目录。)'-framework' 似乎是一个链接器选项,而不是编译器选项,所以你应该把它放在extra_link_args 中——但我不知道它是否重要。
  • 我没有意识到我必须删除构建目录。现在它可以正确导入。谢谢你。对于需要知道您需要的任何人:extra_link_args=['-framework', 'OpenGL'] 删除构建目录并重试。它会起作用的。
  • @ThomasWouters,在我看来,您回答了这个问题。所以也许你会把你的评论变成一个答案,这样就可以接受这个问题不会永远没有答案。

标签: c++ python macos opengl distutils


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-12-22
    • 2012-08-18
    • 2011-03-13
    • 1970-01-01
    • 2015-12-01
    • 2020-04-04
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    相关资源
    最近更新 更多