1

可能重复:
G++ Cpp 中的“未定义引用”

我有这个标题

#ifndef TEST_H_
#define TEST_H_

class TEST
{
public :
    TEST();
};


#endif /* TEST_H_ */

和这个标题

#ifndef TESTS_H_
#define TESTS_H_
#include "TEST.h"

class TESTS : public TEST
{
public :
    TESTS();
};


#endif /* TESTS_H_ */

我像这样实现了这些标头:

#include <iostream>
using namespace std;
#include "TEST.h"
TEST:: TEST()
{
}
int main(int argc, char **argv) {
    return 0;
}

和这个:

#include "TESTS.h"

TESTS :: TESTS() : TEST()
{
}


int main(int argc, char **argv) {
    return 0;
}

我得到以下错误:

/tmp/cc4jN1HN.o:在函数TESTS::TESTS()': TESTS.cpp:(.text+0xd): undefined reference toTEST::TEST()'

为什么 ?

我究竟做错了什么 ?

4

3 回答 3

6

这是一个链接器错误。您可能没有编译和链接所有必需的文件。它应该是例如:

$ g++ -Wall TEST.cpp TESTS.cpp -o TEST

您还需要摆脱 main() 函数之一。

于 2012-12-31T08:39:28.167 回答
1

如果这应该是一个程序,它只能有一个main功能。如果这应该是两个程序,那么其中的一个程序TESTS::TESTS也需要TEST.

于 2012-12-31T08:42:03.150 回答
0

假设您的两个 .cpp 文件分别命名为 TEST.cpp 和 TESTS.cpp,我猜您只是在编译第一个文件,例如使用

g++ TESTS.cpp

但是您需要将它们一起编译,例如

g++ TEST.cpp TESTS.cpp

否则,TESTS.cpp 在编译时将无法找到 TEST.cpp 中定义的代码。

于 2012-12-31T08:40:08.323 回答