当我从Xcode运行应用程序时,它会扩展一些环境变量。例如,它将可执行目录添加到DYLD_LIBRARY_PATH。因为我在可执行目录中有libjpeg.dylib,我的应用程序无法初始化错误:
dyld: Library not loaded: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
Referenced from: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
Reason: Incompatible library version: ImageIO requires version 1.0.0 or later, but libJPEG.dylib provides version 0.0.0
这显然是因为DYLD_LIBRARY_PATH扩展而发生的。在加载系统框架时,dyld尝试加载我的libjpeg.dylib而不是系统1。对我来说,这样的Xcode行为看起来不合逻辑,因为从终端运行应用程序并从Xcode运行它时会得到不同的结果。所以我正在寻找任何禁用此类Xcode行为的方法。
P.S。在方案的“环境变量”部分中设置DYLD_LIBRARY_PATH没有帮助,因为我将DYLD_LIBRARY_PATH设置为MY_VALUE:EXECUTABLE_DIR。