2014-02-15 204 views
1

我正在關注http://msdn.microsoft.com/en-us/library/ms235627.aspx來創建一個靜態庫,並在位於相同解決方案中的其他項目中使用它。它在靜態函數中工作正常;但是,當我嘗試創建構造函數時,它給了我error LNK2019: unresolved symbolerror LNK1120。我不允許在靜態庫中創建構造函數?C++靜態庫和構造函數

Loogger.h

namespace logger 
{ 
    class Logger 
    { 
    public: 
     Logger(int i); 
     ~Logger(); 
    } 
} 

Logger.cpp

namespace logger 
{ 
    Logger::Logger(int i) 
    { 
     clog << "In the constructor" << i << endl; 
    } 
} 

Main.cpp的:(在一個單獨的項目)

int main(void) 
{ 
    Logger log(3); 
    return 0; 
} 

錯誤: enter image description here

+0

你有沒有在主項目中引用你的lib? – Idov

+0

是的,我想。 '因爲靜態函數的工作.. –

+0

@ldov我會懷疑這樣(OP說'它可以正常使用靜態函數')... –

回答

1

你錯過了定義構函數爲您Logger類:

Logger::~Logger() 
{ 
} 

要麼忽略它的聲明(編譯器創建一個默認版本),或做如上圖所示。

+0

真的,非常感謝! –

+0

編譯器不會生成默認的析構函數嗎? –

+1

@NipunTalukdar如果你沒有聲明它(我提到過),我相信OP沒有在他的代碼示例中真實地顯示它。 –