可能重复:
What is an undefined reference/unresolved external symbol error and how do I fix it?
我最近开始使用C ++编写一个解释器,但我很生气,无论我尝试什么,都无法将向量或数组传递给外部类方法,所以我删除了我曾经处理过的所有内容。事实证明,我甚至无法将 int 传递给另一个类。我决定在使用C或Java之前给C ++另一次机会,但是编译器仍然没有像我期望的那样工作。也许我忘了关于C ++的一些简单的事情,因为我有一段时间没有使用它,但这看起来很简单。我的问题是:当它们未在同一文件中定义时,我无法将参数传递给其他类中的方法。这就是我想要做的事情:
主要:main.cpp
#include "myclass.h"
int main() {
MyClass test;
int n = test.add(25, 30);
return n;
}
标题:myclass.h
class MyClass {
public:
int add(int a, int b);
};
类实现:myclass.cpp
#include "myclass.h"
int MyClass::add(int a, int b) {
return a + b;
}
使用g++ main.cpp
产生
/tmp/ccAZr6EY.o:在函数
main': main.cpp:(.text+0x1a): undefined reference to
MyClass :: add(int,int)'中 collect2:错误:ld返回1退出状态
我到底做错了什么?此外,即使我的函数没有参数化,编译器也会对我大吼大叫,因此它必须是标题的问题。
非常感谢任何帮助 - 谢谢!
答案 0 :(得分:2)
您需要编译这两个文件
g++ main.cpp myclass.cpp
如果只编译main.cpp,编译器会在标头中找到MyClass::add
的声明,但链接器后来无法找到要跳转到的MyClass::add
的实现。