我有以下代码,我得到未定义的引用`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();
我不知道为什么会收到此错误。如何解决此错误?
答案 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
应该同时编译和链接文件。