我最近搬到了Mac,并且在使用命令行编译器时很挣扎。我正在使用g++进行编译,因此可以很好地构建单个源文件。如果尝试添加自定义头文件,则在尝试使用g++进行编译时,会得到体系结构i386的 undefined symbol 。程序可以在xCode中正常编译。我缺少明显的东西吗?
尝试使用g++ -m32 main.cpp ...不知道还可以尝试什么。
好的,旧代码已编译...将其范围缩小到了我的构造函数。
class Matrix{
public:
int a;
int deter;
Matrix();
int det();
};
#include "matrix.h"
Matrix::Matrix(){
a = 0;
deter = 0;
}
int Matrix::det(){
return 0;
}
我的错误是
体系结构x86_64的 undefined symbol :
从以下位置引用的“Matrix::Matrix()”
_main在ccBWK2wB.o中
ld:找不到架构x86_64的符号
collect2:ld返回1退出状态
我的主要代码有
#include "matrix.h"
int main(){
Matrix m;
return 0;
}
和平常一样
最佳答案
您似乎拥有三个文件:
Matrix
类的头文件; Matrix
方法的源文件; main()
并使用Matrix
类的源文件。 为了生成带有所有符号的可执行文件,您需要编译两个.cpp文件并将它们链接在一起。
一种简单的方法是在
g++
或clang++
调用中都指定它们。例如:clang++ matrix.cpp main.cpp -o programName
或者,如果您更喜欢使用
g++
(Apple已有一段时间未更新),并且看来在可预见的将来它们不会使用:g++ matrix.cpp main.cpp -o programName
关于c++ - 体系结构i386的 undefined symbol :,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5818270/