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