我目前正在使我的PyObjC应用程序适用于Snow Leopard并且我成功编译了一个独立的应用程序。我的问题是,如果出现这些错误,我如何使构建也与Leopard兼容?
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
这是一个Snow Leopard编译的py2app应用程序。此外,当我在Leopard上编译时,另一方面,会发生此错误:
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 :(得分:3)
我最近这样做了,其诀窍是在 Leopard 安装上构建独立版本。
默认情况下,除非您安装了Python的开源版本,否则py2app会创建一个半独立应用程序,该应用程序具有操作系统文件的符号链接。
如果您创建了应用程序的独立版本,则解释器和支持文件将嵌入到您的应用程序中,因此在运行您的应用程序的所有计算机上都是一致的。有关创建完全独立应用程序的说明here,但请注意博客的评论,因为在撰写博客文章后,某些内容确实发生了变化。
如果你有你需要的特定库,你可以在setup.py文件中引用它们,或者你总是可以手动将它们添加到dylib目录(这对我来说更容易,因为我需要更改启动脚本并且没有'我想重新生成),但要确保使用32位库(它将在Leopard上)。
答案 1 :(得分:0)
由于两者都在不同的架构上(分别为32位和64位),我认为你必须创建2个不同的编译。
答案 2 :(得分:0)