使用this关键字编译程序

Compiling program using the this-keyword

本文关键字:编译程序 关键字 this 使用      更新时间:2023-10-16

我正试图使用makefiles编译别人编写的程序,在使用之前我没有时间学习程序中的所有内容,因此我对一些错误感到困惑。

第一个错误是

(...): In function `_ZN30RealTriDiagonalSymmetricMatrix14ResizeAndCleanEii':
/home/jorgen/diaghamsvn/DiagHam/src/Matrix/RealTriDiagonalSymmetricMatrix.cc:350: 
undefined reference to `GarbageFlag::Used()'

RealTriDiagonalSymmetricMatrix.cc中的违规行为:

if (this->Flag.Used() == true)

我查找文件GarbageFlag.h,它包含函数Used();这是它的一部分:

class GarbageFlag
{
 private:
#ifdef __SMP__
pthread_mutex_t *FlagMutex;
#endif

public:
// default constructor
GarbageFlag();
// copy constructor
// flag = garbage flag to copy
GarbageFlag(const GarbageFlag& flag);
// destructor
~GarbageFlag();
// return value = reference on current garbage flag
GarbageFlag& operator = (const GarbageFlag& flag);
bool Used ();

此外,文件RealTriDiagonalSymmetricMatrix.cc包含一个标头,其中再次包含GarbageFlag.h。因此,我很困惑它为什么找不到函数。

在这之后还有很多类似的错误。有人知道发生了什么事吗?

这是一个链接器错误,因此编译器在查找GarbageFlag::Used的声明时没有问题。缺少的是该方法的定义(实现)。

您需要确保包含GarbageFlag::Used实现的源文件已编译并与其他源文件链接在一起。