objective C架构i386的未定义符号,我不明白这个错误

时间:2013-03-26 11:34:12

标签: iphone ios objective-c

我在目标C中首次亮相,我试图为iOS做一个简单的密码生成器。 在这段代码中,我尝试创建一个带字母和数字的随机字符串。然后我尝试用NSLog显示这个字符串(看它是否有效)

当我运行程序时,我遇到了这个错误:

enter image description here

我创建了2个文件,有viewcontroller.m

enter image description here

我的viewcontroller.h

enter image description here

你能帮助我吗?

3 个答案:

答案 0 :(得分:4)

某种程度上某种东西在你的项目中被强大地吸收。

  • start基本上是您的计划的切入点;它是dyld初始化的一部分,是跳转到main()的内容。 (尝试在start上设置一个符号断点,然后运行你的应用程序 - 这是dyld中的一个小例程,可以找出main所在的位置并尾调用它,这就是为什么你除非事情变得非常严重,疯狂,错误,否则永远不会在回溯中看到它。

  • arc4random是C标准库的一部分。它应该始终可用。

我看到的唯一线索是链接行使用-nostdlib。这看起来很奇怪。转到“构建设置”并确保已打开标准库链接。如果不是,发生了什么以及其他可能发生了什么变化?

请注意代码中存在许多其他问题。

头文件中的那些非ivar声明会导致问题;当你第一次将该文件导入另一个编译单元(另一个.m文件)时,它们将成为重复的符号。

@interface UIViewController()不是必需的(你也不应该在系统类上声明方法)。

答案 1 :(得分:-1)

您好请执行以下步骤 1)重启XCode。 2)请检查是否添加了石英代码框架。 3)清洁和建造。

请删除.m文件中 - (NSString *)generer:(int)len 中的分号后的分号(;)。

在之前的应用程序中,我也遇到了同样的问题。 希望这会有所帮助。

答案 2 :(得分:-2)

您在程序arc4random()中使用了c ++代码,这是architechture i386的未定义符号,我不明白这个错误。

要解决这个问题,只需在标题处添加#include <stdlib.h>即可。这应该可以。