2013-06-02 4 views
0

У меня есть странная проблема, связанная с простым кодом, который использует личную библиотеку, которая использует lib4cplus.Ошибка связывания личной библиотеки, которая использует log4cplus

Файл с основным кодом настолько прост и не использует log4cplus. Я использую lib4cplus в библиотеке. Библиотека компилируется правильно, но когда я связать основной файл с библиотекой он thowrs ошибки так (регистраторы Var не определено в архитектуре x86_64)

g++ leer.cpp -c 
ar r libfichero.a blowfish.o clase.o 
g++ -o Class leer.o -lm -lz -llog4cplus libfichero.a 
Undefined symbols for architecture x86_64: 
    "fichero::loggerFichero", referenced from: 
     fichero::startLoggers()  in libfichero.a(clase.o) 
     fichero::fichero()in libfichero.a(clase.o) 
     fichero::fichero()in libfichero.a(clase.o) 
    "fichero::errorLoggerFichero", referenced from: 
     fichero::startLoggers()  in libfichero.a(clase.o) 
     fichero::fichero()in libfichero.a(clase.o) 
     fichero::fichero()in libfichero.a(clase.o) 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 
make[1]: *** [all] Error 1 
make: *** [p21] Error 2 

Ошибки приходит, когда я хочу, чтобы определить мой частный регистратор вары (ficheroLogger и errorFicheroLogger).

Это код в файле cpp моей библиотеки.

bool fichero::startLoggers() 
{ 
    // Aquí inico los loggers que voy a usar en la clase. 
    loggerFichero = Logger::getInstance(LOG4CPLUS_TEXT("utils")); 
    errorLoggerFichero = Logger::getInstance("BigFail"); 
} 


// Método para definir los logs. 
bool fichero::initLogFichero() 
{ 
    cout << "Entering LOG Config part..." << endl; 
    LogLog::getLogLog()->setInternalDebugging(true); 
    Logger root = Logger::getRoot(); 

    // Load the properties 
    PropertyConfigurator::doConfigure("ficheroLog4cplus.properties"); 

    Logger fileLog = Logger::getInstance(LOG4CPLUS_TEXT("filelogger")); 

    // Log with INFO level 
    LOG4CPLUS_INFO(fileLog, "Application startup"); 

    cout << "Exiting the main part()..." << endl; 

    // Log with INFO level 
    if (fileLog.isEnabledFor(INFO_LOG_LEVEL)) 
    { 
     LOG4CPLUS_WARN(fileLog, "Application shutdown"); 
    } 

    startLoggers(); 

    return true; 
} 

// Constructor y Destructor 
fichero::fichero() 
{ 
    nomFile = "file.txt"; 

    delimitador = ""; 
    hayDelimiatador = false; 

    initLogFichero(); 

    LOG4CPLUS_WARN(loggerFichero, "Inicio normal"); 
    LOG4CPLUS_WARN(errorLoggerFichero, "Inicio error."); 
} 
+0

Вы еще не выяснили проблему? – wilx

ответ

0

Это не похоже на проблему log4cplus. Попробуйте перетасовать командную строку:

g++ -o Class leer.o libfichero.a -llog4cplus -lz -lm 

 Смежные вопросы

  • Нет связанных вопросов^_^