2011-11-26 101 views
0

所以我编写了一个iOS游戏,我使用arc4random_uniform来选择随机加电。懒惰符号绑定失败:找不到符号:_arc4random_uniform

SIM卡上,它工作正常,但我的手机上,它抛出这个错误(从系统日志):

Nov 26 13:44:26 iPhone ----[2184]: placePowerupCalled 
Nov 26 13:44:26 iPhone UIKitApplication:com.yourcompany.-----[0x1f08][2184]: dyld: lazy symbol binding failed: Symbol not found: _arc4random_uniform 
Nov 26 13:44:26 iPhone UIKitApplication:com.yourcompany.-----[0x1f08][2184]: Referenced from: /Applications/------.app/----- 
Nov 26 13:44:26 iPhone UIKitApplication:com.yourcompany.------[0x1f08][2184]:   Expected in: /usr/lib/libSystem.B.dylib 
Nov 26 13:44:26 iPhone UIKitApplication:com.yourcompany.------[0x1f08][2184]: dyld: Symbol not found: _arc4random_uniform 
Nov 26 13:44:26 iPhone UIKitApplication:com.yourcompany.-----[0x1f08][2184]: Referenced from: /Applications/------.app/------- 
Nov 26 13:44:26 iPhone UIKitApplication:com.yourcompany.-----[0x1f08][2184]: Expected in: /usr/lib/libSystem.B.dylib 
Nov 26 13:44:27 iPhone ReportCrash[2185]: Formulating crash report for process -----[2184] 
Nov 26 13:44:27 iPhone com.apple.launchd[1] (UIKitApplication:com.yourcompany.-----[0x1f08][2184]): (UIKitApplication:com.yourcompany.-----[0x1f08]) Job appears to have crashed: Trace/BPT trap 
Nov 26 13:44:27 iPhone SpringBoard[2161]: Application '-----' exited abnormally with signal 5: Trace/BPT trap 

我不太清楚是什么问题。我甚至包括头文件arc4random应该来自(#包括“stdlib.h”),但是这并没有奏效。

任何人有任何想法?谢谢:)


编辑:我试图连接与“libSystem.b.dylib”二进制库,但没有任何工作,它仍然从同一个错误而崩溃。

回答

5

在iOS 4.3中添加了arc4_uniform函数,并且不会在较低版本上运行。看起来你在4.3或更高版本上运行模拟器,但是你的设备的iOS版本较低。 如果您计划来支持你的应用程序上的版本低于4.3,请尝试使用这个:

arc4random() % upperBoundExclusive 

它可能不是精确到arc4_uniform随机的,而是将工作。

+0

哇哈哈,我不能相信这是错误。我的设备正在运行4.2.1。谢谢! –

1

arc4random_uniform在iOS 4.3以下不可用。幸运的是,iOS会在运行时绑定这个符号,如果它不可用(因此您的“懒符号绑定”错误),则将其指定为null。

所以使用arc4random_uniform最好的办法是检查它是否可用第一,像这样:

#include <stdlib.h> 
... 
int r = 0; 
if (arc4random_uniform != NULL) 
    r = arc4random_uniform (100); 
else 
    r = (arc4random() % 100); 
+0

谢谢,你的回答帮助我修复了我遇到的OS X 10.7和10.6问题。 ('arc4random_uniform'在10.6中还没有公开。) –

相关问题