2015-02-06 55 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)。我不确定为什么这样开始,但是......呃。现在正在工作。 :)