我最近转向了 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 : “矩阵::矩阵()”,引用自: ccBWK2wB.o 中的_main ld: 找不到体系结构 x86_64 的符号 collect2: ld 返回 1 个退出状态
我的主要代码有
#include "matrix.h"
int main(){
Matrix m;
return 0;
}
和往常一样
最佳答案
看起来你有三个文件:
- matrix.h,声明
Matrix
类的头文件; - matrix.cpp,实现
Matrix
方法的源文件; - main.cpp,一个定义
main()
并使用Matrix
类的源文件。
为了生成包含所有符号的可执行文件,您需要编译这两个 .cpp 文件并将它们链接在一起。
一个简单的方法是在您的 g++
或 clang++
调用中同时指定它们。例如:
clang++ matrix.cpp main.cpp -o programName
或者,如果您更喜欢使用 g++
— Apple 已经有一段时间没有更新了,而且看起来在可预见的 future 也不会:
g++ matrix.cpp main.cpp -o programName
关于c++ - 架构 i386 的 undefined symbol :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5818270/