У меня есть код ниже, и я получаю неопределенную ссылку на '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
второй файл 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
должен иметь как файлы, скомпилированные, так и связанные.