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

时间:2014-10-16 08:52:27

标签: xcode linker ios-simulator

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

检测到试图调用iPhone上不存在的系统库中的符号: fcntl $ UNIX2003从映像test-ios-client中的函数su_setblocking调用。

请注意,相同的代码在实际设备(即iPhone和iPad)上运行良好。

细节:

fcntl()不是直接从我的代码调用的,而是从我使用的静态库(Sofia SIP)中的代码调用的。所以我所做的就是我为我打算运行的所有架构构建了Sofia SIP静态库(即armv7用于设备,i386和x86_64用于32位和64位模拟器),创建了一个'胖'带有lipo的库,然后链接到XCode中的静态库。代码适用于实际设备,但对于模拟器(32位和64位),我得到了上面粘贴的运行时问题。

就好像包含fcntl定义的库没有链接到我的应用程序,但仅限于模拟器。但这很奇怪,因为fcntl是一个标准调用,默认情况下它应该存在(再次,它适用于设备)。我也尝试手动链接XCode中可用的各种其他库,但无济于事。

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

这是Why am i getting this clang error: _fwrite$UNIX2003 on simulator with iOS 8

的副本

您使用的静态库是为OS X而不是iOS模拟器构建的。您需要针对iOS模拟器SDK重建该静态库(或让供应商为您提供适合iOS的构建)。