使用Python ctypes链接XCode dylibs
我是作为的依赖项安装的,但安装后发现以下错误使用Python ctypes链接XCode dylibs,xcode,compilation,ctypes,pyglet,vispy,Xcode,Compilation,Ctypes,Pyglet,Vispy,我是作为的依赖项安装的,但安装后发现以下错误 File "/Library/Python/2.7/site-packages/pyglet/lib.py", line 160, in load_library raise ImportError('Library "%s" not found.' % names[0]) ImportError: Library "c" not found. 翻阅源代码,我意识到Pyglet正试图使用ctypes框架加载标准C库 进一步挖掘揭示了实际(未吞咽)
File "/Library/Python/2.7/site-packages/pyglet/lib.py", line 160, in load_library
raise ImportError('Library "%s" not found.' % names[0])
ImportError: Library "c" not found.
翻阅源代码,我意识到Pyglet正试图使用ctypes框架加载标准C库
进一步挖掘揭示了实际(未吞咽)错误:
我认为,这个问题类似于架构不匹配的情况。PythonC绑定框架“ctypes”试图用错误的体系结构加载.dylib
由于我已将$LD\u LIBRARY\u路径设置为
/Applications.../MacOSX10.10.sdk/usr/lib/
加载程序支持此目录。但是,如果我尝试从标准位置加载“libc.dylib”/usr/lib
,一切都会正常工作
明显的潜在问题是,“libc”的XCode版本适用于32位体系结构,而/usr/lib
适用于64位体系结构
不是真的强>
以下是两个库的文件
的输出:
XCode版本
libc.dylib: Mach-O universal binary with 2 architectures
libc.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library stub x86_64
libc.dylib (for architecture i386): Mach-O dynamically linked shared library stub i386
以及/usr/lib
/usr/lib/libc.dylib: Mach-O universal binary with 2 architectures
/usr/lib/libc.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64
/usr/lib/libc.dylib (for architecture i386): Mach-O dynamically linked shared library i386
唯一的区别是XCode版本是一个“存根”。尽管谷歌进行了一些搜索,但区别并不完全清楚,尽管“存根”动态库和“非存根”动态库之间的区别似乎是导致问题的原因
有关我的设置的更多信息:
/usr/bin/python : Python 2.7.10 and appears to be running as a 64-bit app
uname -a: Darwin x-10-104-106-204.uofm-secure.wireless.umn.edu 14.5.0 Darwin Kernel Version 14.5.0: Wed Jul 29 02:26:53 PDT 2015; root:xnu-2782.40.9~1/RELEASE_X86_64 x86_64
因此,我的问题是如何正确链接XCode安装的dylibs
提前感谢您的所有想法和建议
/usr/bin/python : Python 2.7.10 and appears to be running as a 64-bit app
uname -a: Darwin x-10-104-106-204.uofm-secure.wireless.umn.edu 14.5.0 Darwin Kernel Version 14.5.0: Wed Jul 29 02:26:53 PDT 2015; root:xnu-2782.40.9~1/RELEASE_X86_64 x86_64