2009-08-29 97 views
6

我目前正在使我的PyObjC應用程序適用於Snow Leopard,併成功編譯了獨立應用程序。我的問題是,考慮到這些錯誤,我怎麼讓這個版本兼容Leopard?編譯Leopard和Snow Leopard的py2app工作版本?

dyld: lazy symbol binding failed: Symbol not found: _fopen$UNIX2003 
    Referenced from: /Applications/MyApp.app/Contents/MacOS/MyApp 
    Expected in: /usr/lib/libSystem.B.dylib 

dyld: Symbol not found: _fopen$UNIX2003 
    Referenced from: /Applications/MyApp.app/Contents/MacOS/MyApp 
    Expected in: /usr/lib/libSystem.B.dylib 

這是一個雪豹編譯的py2app應用程序。另一方面,當我在豹編譯,另一方面,發生此錯誤:

Traceback (most recent call last): 
    File "/Users/jofell/client/dist/MyApp.app/Contents/Resources/__boot__.py", line 31, in <module> 
    _run('main.py') 
    File "/Users/jofell/client/dist/MyApp.app/Contents/Resources/__boot__.py", line 28, in _run 
    execfile(path, globals(), globals()) 
    File "/Users/jofell/client/dist/MyApp.app/Contents/Resources/main.py", line 17, in <module> 
    from AppKit import * 
    File "AppKit/__init__.pyc", line 10, in <module> 
    File "Foundation/__init__.pyc", line 10, in <module> 
    File "CoreFoundation/__init__.pyc", line 17, in <module> 
    File "objc/_bridgesupport.pyc", line 129, in initFrameworkWrapper 
    File "objc/_bridgesupport.pyc", line 53, in _parseBridgeSupport 
ValueError: Unknown typestr 
2009-08-29 19:30:14.530 MyApp[445:903] MyApp Error 
2009-08-29 19:30:14.534 MyApp[445:903] MyApp Error 
An unexpected error has occurred during execution of the main script 

任何幫助,將不勝感激。提前致謝。

回答

0

因爲兩者都在不同的架構(分別爲32位和64位),我認爲你必須創建2個不同的編譯。

3

我最近做了這個,唯一的辦法是建立一個獨立版本安裝。

默認情況下,除非您安裝了開源版本的Python,否則py2app會創建一個半獨立應用程序,該應用程序具有符合OS文件的鏈接。

如果您創建應用程序的獨立版本,則解釋器和支持文件將嵌入您的應用程序中,因此在運行應用程序的所有機器上都是一致的。有關創建完全獨立應用程序的說明,請參見here,但請注意博客的評論,因爲在撰寫博客文章後有些事情確實發生了變化。

如果你有需要的特定庫,你可以在setup.py文件中引用它們,或者你可以隨時將它們手動添加到dylib目錄(這對我來說更容易,因爲我需要更改啓動腳本,不想重新生成),但要確保使用32位庫(它將在Leopard上)。