取消定义静态函数的引用错误

Undefine reference error for static function

本文关键字:引用 错误 静态函数 定义 取消      更新时间:2023-10-16

我有下面的代码,我得到了对'StInit::instance()'的未定义引用

文件 StInit.h

class StInit
{
public:
static StInit* instance();
};

文件 StInit.cc

#include "StInit.h"
StInit*
StInit::instance()
{
    static StInit *myPtr = NULL;
    ......
    ......
    return myPtr;
}

文件 nm.cc

#include "StInit.h"
StInit* stor_init = StInit::instance();

我不知道为什么会出现此错误。如何解决此错误?

您可能没有将第二个文件StInit.cc包含在二进制文件中,因此链接器错误。我不熟悉 tup,但查看手册,似乎您需要在 tup 文件中包含这两个文件。

请看本文档中的最后一个示例:http://gittup.org/tup/ex_a_first_tupfile.html,只需按原样复制它即可。

因此,将Tupfile更改为:

: foreach *.c |> gcc -Wall -c %f -o %o |> %B.o
: *.o |> gcc %f -o %o |> hello

hello应该编译和链接文件。