Неопределенная ссылка на статический метод - PullRequest
0 голосов
/ 20 декабря 2011

Я пытаюсь скомпилировать этот код, и соединение не удается со следующей ошибкой: вот как я его компилирую;

g++ logtester.cc -I/home/foo/include -L/home/foo/lib -llog4cxx


/tmp/ccADKreY.o(.text+0x120): In function `main': undefined reference to `FrameworkLogger::getInstance()'
collect2: ld returned 1 exit status    

Почему? как я могу это исправить?

#include <log4cxx/logger.h>
#include <log4cxx/xml/domconfigurator.h>

using namespace log4cxx;
using namespace log4cxx::xml;
using namespace log4cxx::helpers;

class FrameworkLogger
{
    private:
        FrameworkLogger();
        LoggerPtr logger;

    public: 
        static LoggerPtr getInstance();

};

(Другой файл:)

#include "FrameworkLogger.h"
#include <iostream>

LoggerPtr FrameworkLogger::getInstance()
{
    std::cout<<"test";
}

(еще один файл:)

#include "FrameworkLogger.h"
#include <iostream>

using namespace std;

int main(){
//      LoggerPtr logger =
        FrameworkLogger::getInstance();
        std::cout<<"test";
}

Ответы [ 2 ]

5 голосов
/ 20 декабря 2011

Это звучит как ошибка компоновщика. Убедитесь, что вы правильно связываете все свои объектные файлы

3 голосов
/ 20 декабря 2011

Вам нужно перечислить все единицы компиляции (файлы .cc) в вызове компилятора:

 g++ logtester.cc the-file-you-have-not-named.cc -I/home/foo/include -L/home/foo/lib -llog4cxx
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...