Undefined symbols for architecture x86_64错误

当我们在一个项目中想使用外部其他项目的一个类时,可以在项目中直接添加类文件到项目中。但是,在编译的时候出现了这样的错误:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_Person", referenced from:
      objc-class-ref in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这说明编译没有问题,连接的时候出错了,找不到导入的目标文件。

先看看是如何导入类文件吧。在项目文件夹上点右键,选择Add file to…

http://www.xcoder.cn/wp-content/uploads/2013/09/add_file_to_project.png

然后选择需要添加的文件,不过下面的第一个复选框一定要选择上:

选择需要导入的文件

这里第一个Copy Items的复选框需要勾选,不然选择的就是导入一个引用,勾选后直接将文件导入项目中。

然后在main.m中使用:

//
//  main.m
//  ExportObject用法
//
//  Created by Mr. Right on 13-9-24.
//  Copyright (c) 2013年 XCoder Studio. All rights reserved.
//
 
#import <Foundation/Foundation.h>
#import "Person.h"
 
int main(int argc, const char * argv[])
{
 
    @autoreleasepool {
        Person * person = [[[Person alloc] initWithFirstName:@"Wang"
                                                    lastName:@"Xi"
                                                        type:1] autorelease];
    }
    return 0;
}

然后编译运行就出现了上面的错误了。是为什么呢?

遇到这种问题,首先想到的是导入文件编译环境发生了变化,所以先选择Product-Clean将项目缓存清理一下:

Xcode清理项目缓存

Xcode清理项目缓存

但是这样做还是不行,那怎么办呢?我们应该这样做,看项目有没有编译导入的文件,在这个位置查看:

选择项目-Build Phases选项卡-Compile Sources

Xcode查看项目编译项目

Xcode查看项目编译项目

这里只有一个main.m,Person.m没有被编译,当然错误了,将Person.m添加进去就OK了。点击下面的”+”添加,注意只添加.m文件,不添加头文件!

到这里 如果还不行的话。那么就是这个文件关联了部分官方的库文件。比如FMDB就需要导入官方的libsqlite3.dylib



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、软件说明: 1. x64dbg 是一款开源的、目前仍在积极开发中的 x32/x64 位动态调试器。其界面及操作方法与 OllyDbg 类似,和 OllyDbg 不同的是它可以对 64 位程序进行调试。此外,其开放式的设计给了此软件很强的生命力。通过爱好者们不断的修改和扩充,使其功能越来越强大。 2. 该调试器(目前)有三部分:DBG、GUI、Bridge。 DBG 是调试器的调试部分。它处理调试技术(使用 TitanEngine),并为 GUI 提供数据。 GUI 是调试器的图形部分。它建立在 Qt 上,并提供用户交互界面。 Bridge 是 DBG 和 GUI 部分的通信(将来也许是在更多的部件之间)。Bridge 可用于在新建功能上工作,而无需更新代码的其他部分。 二、汉化修订说明: 1. 为帮助用户更好地了解 x64dbg 反汇编后的 CPU 汇编指令信息,本次特别对汇编指令的“助记符帮助”和“助记符摘要”进行了汉化。汇编指令的汉化参考了“清华大学出版社”出版的《汇编语言程序设计教程》(第4版) 中术语,因此可能与其他软件的汉化术语略有不同。 2. 对 Scylla 插件等进行了全面汉化。 3. 对 x64dbg 帮助文档的主要内容,按照最新版进行了修订、翻译。对界面字体以及布局重新进行了设置。并将默认调用在线帮助更改为调用本地帮助文件。 4. 对 x64dbg 官方中文版的汉化错误及不一致处进行了修订,并与帮助文档的关键词进行了统一。 5. 对中文版界面字体进行了重新设置,使其更为美观。
### 回答1: undefined symbols for architecture x86_64 意思是在编译或链接时,找不到指定的符号或函数。这通常是由于缺少文件或头文件,或者代码中存在语法错误或逻辑错误导致的。需要检查代码和依赖项,以解决这个问题。 ### 回答2: “undefined symbols for architecture x86_64”这个错误信息通常出现在使用C/C++语言进行编程时。这个错误表示在链接时缺少符号,编译器无法找到函数或变量的定义。在x86_64架构中,符号可能是函数、变量或其他代码,因此需要通过特定的符号解析过程来定义他们。 这个错误可以通过以下方法解决: 1.检查代码中是否有定义所有需要的函数和变量,如果有遗漏,需要添加定义。 2.检查头文件和文件是否正确包含,必须确保所有必需的头文件和文件都被正确链接。 3.检查编译器选项和链接器选项是否正确设置。如果编译时使用了新的标志或选项,可能需要更新链接器选项。 4.如果代码中使用了某些外部的函数,则需要确保已经被正确添加到链接器中。 5.如果使用了静态,那么需要确保发布的静态文件与正在编译的代码是匹配的。 在解决了上述问题后,编译器会将代码重新链接,以确保所有符号被正确解析。此时,就可以消除“undefined symbols for architecture x86_64”的错误提示,顺利完成编译和链接过程。 ### 回答3: "undefined symbols for architecture x86_64"是一种错误信息,通常出现在使用编译器或链接器编译和构建程序的过程中。这个错误信息表明,编译器或链接器无法找到代码中引用的某些函数或变量的定义。 这个错误信息提示中的“architecture x86_64”表示代码的编译架构是x86_64,即64位的x86架构。这个错误还可以在其他架构上出现,如ARM架构等。 这种错误通常是由于程序中调用的某些或函数没有正确地链接到程序中,或者或函数的定义没有包括在项目中导致的。解决这个问题的一种方法是检查相关的或函数是否正确地链接到程序中,并确保它们的定义包括在项目中。可以使用命令行工具或IDE中的链接器选项来解决这个问题。 此外,也有可能是由于程序中使用了已过时的函数或,或者程序中的代码出现了错误。在这种情况下,需要检查代码并修复错误,或者使用更新的函数或来替换旧代码。 总之,“undefined symbols for architecture x86_64”是一个指出编译/链接过程中可执行文件依赖不匹配或者找不到函数的错误信息,需要检查相关链接、函数定义文件和编译器选项并修正代码错误,以解决此问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值