静态函数的未定义引用错误

时间:2014-12-05 23:08:45

标签: c++

我有以下代码,我得到未定义的引用`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();

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

1 个答案:

答案 0 :(得分:0)

您可能没有将第二个文件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应该同时编译和链接文件。