我試圖編譯此代碼並且鏈接失敗,出現以下錯誤: 這是我如何編譯它的;對靜態方法的未定義引用
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";
}
你能告訴你的是什麼編譯器調用樣子? – 2011-12-20 19:39:01
我敢打賭,你的連接器行是錯誤的,並錯過了我在這裏用「另一個文件」命名的文件。你能否顯示你的編譯器調用? – thiton 2011-12-20 19:41:14
我編輯了答案並添加了編譯器調用。 – DarthVader 2011-12-20 19:42:42