dyld:找不到符号:___darwin_check_fd_set_overflow

问题描述 投票:0回答:2

当我在 XCode 12.4 目标设备 iOS 13.3 中构建应用程序时,它将在启动时崩溃并显示以下错误消息。但目标设备模拟器运行良好。

dyld:找不到符号:___darwin_check_fd_set_overflow 引用自:/private/var/containers/Bundle/Application/EBA2D824-6239-4E6A-BD10-1A3F945AECA3/MyAPP.app/MyAPP 预期位于:/usr/lib/libSystem.B.dylib 在 /private/var/containers/Bundle/Application/EBA2D824-6239-4E6A-BD10-1A3F945AECA3/MyAPP.app/MyAPP dyld:启动,加载依赖库 DYLD_LIBRARY_PATH=/usr/lib/system/introspection DYLD_INSERT_LIBRARIES=/Developer/usr/lib/libBacktraceRecording.dylib:/Developer/usr/lib/libMainThreadChecker.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib:/Developer/Library/PrivateFrameworks/GPUTools.framework/ libglInterpose.dylib:/usr/lib/libMTLCapture.dylib

崩溃可以通过弱链接到 libSystem.B.dylib 来解决,但我只是想知道为什么会发生这种情况。任何线索表示赞赏

xcode dyld weak-linking libsystem
2个回答
3
投票

__darwin_check_fd_set_overflow
,用作
FD_SET
及相关宏实现的一部分,仅适用于iOS 14及更高版本。它是用可用性注释声明的,如果您将部署目标设置为 iOS 14 之前的版本来构建,则该注释应该会导致其弱链接。这使得它可以在为早期 iOS 版本构建的代码中使用,因为使用它的代码在运行时检查是否找到定义。 int __darwin_check_fd_set_overflow(int, const void *, int) __API_AVAILABLE(macosx(11.0), ios(14.0), tvos(14.0), watchos(7.0));

如果您的部署目标未设置为旧版本,则该符号将不会弱链接,并且当动态加载程序无法按预期在 libSystem 中找到该符号时,您将在运行时看到错误。


0
投票

在我的旧 Mac iOS 10.15 上尝试激活已安装的 Stable Diffusion 时,我遇到了完全相同的错误。已经通过了所有内容,自制程序,python,SD-webUI,当我尝试使用“./webui.sh”激活它时,会发生与您相同的错误。尝试删除环境和所有这些。

© www.soinside.com 2019 - 2024. All rights reserved.