Неопределенная ошибка ссылки для статической функции

0

У меня есть код ниже, и я получаю неопределенную ссылку на '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
    Я использую файловую систему на основе Tup. Так что "Tup Upd" моя команда сборки
Показать ещё 1 комментарий
Теги:

1 ответ

0

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

  • 0
    Нет. Это уже в хорошей форме. То же самое, как вы упоминаете.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню