2010-05-02 50 views
25

当我尝试它,我得到:如何在Mac OSX上使用distutils使用python C++扩展编译OpenGL?

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吗?我的代码编译得很好,所以没有必要把它放在那里。下面是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]) 
+0

请问你目前的做法联系起来看? – 2010-05-02 19:46:18

+0

那么当前setup.py看起来像: 从distutils.core进口设置,扩展 模块1 =扩展( 'cscalelib', \t \t \t extra_compile_args = “-framework OpenGL的”, “-lm”,“ - LGL”, “-lGLU”], 源= [ 'cscalelib.cpp']) 设置(名称= 'cscalelib', 版本= '0.1', 描述= '试验setup_framebuffer', ext_modules = [ module1]) 我试过很多不同的东西。这是尝试添加大量可能有用的gcc参数。 – 2010-05-02 19:55:53

+3

执行的实际编译器命令是什么? (“蟒蛇setup.py构建-v”应该告诉你,如果它在默认情况下不会。删除“构建”目录,如果它决定不再重建什么。)“-framework”似乎是一个连接器选项,而不是编译器选项,所以你应该把它放在'extra_link_args'中,而不是 - 但我不知道它是否会影响。 – 2010-05-02 22:45:49

回答

3

我不知道,我不得不删除构建目录。现在它正确导入。

对于任何人需要知道你需要:extra_link_args=['-framework', 'OpenGL']删除生成的目录并再次尝试。它会工作。

相关问题