log4cpp链接未解析的外部符号

时间:2015-02-06 18:09:53

标签: c++ visual-studio visual-studio-2012 log4cpp

我试图在我的MSVC项目中使用log4cpp。我下载了log4cpp,并打开了它的msvc10 \ msvc10.sln文件。我使用的是Visual Studio 2012(msvc11),因此它促使我更新了log4cpp的项目。我做了,一切似乎都很顺利。然后我构建了log4cppLIB项目。它生成了msvc10 \ log4cppLIB \ Debug \ log4cppD.lib。到目前为止似乎很好。

回到我自己的项目中,我将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 &)" (?getInstance@Category@log4cpp@@SAAEAV12@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@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 个答案:

答案 0 :(得分:0)

显然我确实需要编译为x64 我必须将运行时库从Multi-threaded Debug DLL (/MDd)更改为Multi-threaded Debug (/MTd)。我不确定为什么它会以这种方式开始,但是......嗯。它现在正在运作。 :)