2010-05-02 128 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']刪除生成的目錄並再次嘗試。它會工作。

相關問題