Я пытаюсь использовать log4cpp в моем проекте MSVC. Я скачал 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'
).
Какие-нибудь мысли?
Видимо я действительно должен был скомпилировать как x64 а также Я должен был изменить Runtime Libary от Multi-threaded Debug DLL (/MDd)
в Multi-threaded Debug (/MTd)
, Я не уверен, почему это было задано таким образом, но … Мех. Теперь это работает. 🙂