Xcode 调用fcntl()时iOS模拟器崩溃-符号不存在

Xcode 调用fcntl()时iOS模拟器崩溃-符号不存在,xcode,linker,ios-simulator,Xcode,Linker,Ios Simulator,我在XCode控制台中得到的完整错误消息: 检测到有人试图调用iPhone上不存在的系统库中的符号: 从图像测试ios客户端中的函数su_setblocking调用fcntl$UNIX2003。 请注意,相同的代码在实际设备(即iPhone和iPad)上也可以正常工作 详情如下: fcntl()不是直接从我的代码调用的,而是从我使用的静态库(Sofia SIP)中的代码调用的。因此,我所做的是,我为我打算运行的所有体系结构构建了Sofia SIP静态库(即设备的armv7,32位和64位模拟器的

我在XCode控制台中得到的完整错误消息:

检测到有人试图调用iPhone上不存在的系统库中的符号: 从图像测试ios客户端中的函数su_setblocking调用fcntl$UNIX2003。

请注意,相同的代码在实际设备(即iPhone和iPad)上也可以正常工作

详情如下:

fcntl()不是直接从我的代码调用的,而是从我使用的静态库(Sofia SIP)中的代码调用的。因此,我所做的是,我为我打算运行的所有体系结构构建了Sofia SIP静态库(即设备的armv7,32位和64位模拟器的i386和x86_64),用lipo创建了一个“fat”库,然后在XCode中链接到该静态库。代码在实际设备上运行良好,但对于模拟器(32位和64位),我得到了上面粘贴的运行时问题

就好像包含fcntl定义的库没有链接到我的应用程序,而只是针对模拟器。但这很奇怪,因为fcntl是一个标准调用,默认情况下它应该在那里(另外,它也适用于设备)。我还尝试手动链接XCode中可用的其他各种库,但没有成功

有什么想法吗

谢谢

这是


您正在使用的静态库是为OSX而不是iOS模拟器构建的。您需要根据iOS Simulator SDK重建该静态库(或者让供应商为您提供适当的iOS版本)。

可能是它的副本!显然,我用来为库的命令行构建设置模拟器环境的脚本搞乱了。我将其更改为正确指向模拟器库、二进制文件等,现在它工作正常。谢谢