static报错 Undefined symbols for architecture x86_64

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了static报错 Undefined symbols for architecture x86_64相关的知识,希望对你有一定的参考价值。

上代码:

头文件:
#ifndef __xx__

#define __xx__

#include <stdio.h>

class xx

static int x;

static int getX();

;

#endif

对应的源文件:
#include "xx.h"

int xx::getX()

return x;



报错:
Undefined symbols for architecture x86_64:

"xx::x", referenced from:

xx::getX() in xx.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

这么简单一个static成员的例子就报错了。。。5555,求解啊

在Mac OS X中,或者其他类Unix系统,当使用static之类的C++时,如果使用gcc编译,则会报错Undefined symbols for architecture x86_64

解决方案:使用g++替换gcc命令,编译即可。

参考技术A 你是用什么语言写的?

好吧我默认你是C++了,因为在C语言中是没有类(Class)的.

首先,你并没有把主函数发上来,没有主函数程序是无法成功编译的,所以第一点:加上主函数;

第二,似乎静态变量无法在另一个编译文件中成功编译,所以作如下更改:
1. 删除源文件中全部代码
2. 头文件中的"static int getX();"修改为:
"static int getX()return x;"

目前在我的电脑中已经通过编译,本人也是新手,说的不对还望指正.

希望我的回答能帮到你.望采纳!

(转)xcode报错:Undefined symbols for architecture x86_64

操作:直接引入第三方文件

报错如图:

技术图片

原因:引入的第三方文件未被编译

解决一:下图配置处添加要编译的文件

技术图片

解决二:使用 Add Files to 项目 依次添加所有文件

重新编译,成功。

以上是关于static报错 Undefined symbols for architecture x86_64的主要内容,如果未能解决你的问题,请参考以下文章

(转)xcode报错:Undefined symbols for architecture x86_64

关于 报错 undefined symbol: php_json_serializable_ce

一键安装lnmp报错 pycurl.so: undefined symbol: CRYPTO_set_locking_callback

symbol lookup error *** , undefined symbol 错误

微信SDK导入报错 Undefined symbols for architecture i386:"operator delete[](void*)", referenced f

[C++]共享内存cmake报错undefined reference to symbol ‘shm_unlink@@GLIBC_2.2.5