2015-02-06 166 views
0

我想在我的MSVC項目中使用log4cpp。我下載了log4cpp,並打開了它的msvc10 \ msvc10.sln文件。我使用的是Visual Studio 2012(msvc11),因此它促使我更新log4cpp的項目。我做了,一切似乎都順利。然後我建立了log4cppLIB項目。它生成了msvc10 \ log4cppLIB \ Debug \ log4cppD.lib。似乎迄今如此好。log4cpp鏈接無法解析的外部符號

回到我自己的項目中,我將msvc10 \ log4cppLIB \ Debug添加到鏈接程序庫目錄,將log4cppD.lib添加到鏈接程序依賴項。當我嘗試建立我的項目,我得到這個錯誤:

error LNK2019: unresolved external symbol "public: static class log4cpp::Category & __cdecl log4cpp::Category::getInstance(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" ([email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z) 

事情我已經嘗試:

  • 也許我的連接路徑或文件名是錯誤的?不,因爲如果我故意使用錯誤的路徑,那麼我得到一種不同的錯誤(fatal error LNK1104: cannot open file 'log4cpp.lib'

  • 也許內存模型需要匹配?我的項目是x64,而log4cpp默認爲win32。但不是。我將log4cpp更改爲x64並重建。但是,然後重新構建我的項目會產生更多的錯誤(error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MTd_StaticDebug')。

有什麼想法?

+1

您需要以相同的位深度和相同的運行時編譯庫。在第一個項目符號中,您在第二個項目中混合了32位和64位,您將爲庫和應用程序選擇不同的運行時(/ MDd與/ MTd)。 – drescherjm 2015-02-06 18:31:43

回答

0

顯然我確實必須編譯爲x64 我必須將運行時庫文件從Multi-threaded Debug DLL (/MDd)更改爲Multi-threaded Debug (/MTd)。我不確定爲什麼這樣開始,但是......呃。現在正在工作。 :)