Ошибка ссылки Log4cplus 2001 в VS2013
Я гарантирую, что скомпилировал проект log4cplus как динамическую библиотеку с кодировкой Unicode(Debug_Unicode), и мой собственный тестовый проект также был настроен на кодировку Unicode. Оба они скомпилированы по отладочной модели. Я читал много подобных вопросов, но все еще не могу решить эту проблему... Ниже приведен мой тестовый код :
#include "Include/log4cplus/loggingmacros.h" #include "Include/log4cplus/configurator.h" #include "Include/log4cplus/helpers/loglog.h" #include "Include/log4cplus/helpers/stringhelper.h" #include "Include/log4cplus/helpers/fileinfo.h" #include "Include/log4cplus/loggingmacros.h" #include "Include/log4cplus/initializer.h" #pragma comment(lib, "log4cplusUD.lib") using namespace std; using namespace log4cplus; using namespace log4cplus::helpers; int main(int argc, wchar_t* argv[]) { cout << LOG4CPLUS_TEXT("Entering main()...") << endl; log4cplus::Initializer initializer; LogLog::getLogLog()->setInternalDebugging(true); Logger root = Logger::getRoot(); try { PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("E:\\log4cplus.properties")); Logger fileCat = Logger::getInstance(LOG4CPLUS_TEXT("filelogger")); LOG4CPLUS_WARN(root, LOG4CPLUS_TEXT("Testing....")); LOG4CPLUS_WARN(root, LOG4CPLUS_TEXT("Writing messages to log....")); for (int i = 0; i<10000; ++i) LOG4CPLUS_WARN(fileCat, LOG4CPLUS_TEXT("This is a WARNING...") << i); // Test that DOS EOLs in property files get removed. #define TEST_TEXT LOG4CPLUS_TEXT ("this is a test with DOS EOL-->") tistringstream propsStream( LOG4CPLUS_TEXT("text=") TEST_TEXT LOG4CPLUS_TEXT("\r\n")); Properties props(propsStream); LOG4CPLUS_ASSERT(root, props.getProperty(LOG4CPLUS_TEXT("text")) == TEST_TEXT); } catch (...) { tcout << LOG4CPLUS_TEXT("Exception...") << endl; LOG4CPLUS_FATAL(root, LOG4CPLUS_TEXT("Exception occured...")); } http://www.codeproject.com/Questions/ask.aspx# cout << LOG4CPLUS_TEXT("Exiting main()...") << endl; return 0; }
Я просто копирую этот код из "propertyconfig_test" в log4cplus, файл lib и dll также компилируется с "Debug_Unicode", когда я компилирую свой собственный тестовый проект, то возникает ошибка ссылки:
error LNK2001: unresolved external symbol "class std::basic_ostream<wchar_t,struct std::char_traits<wchar_t=""> > & log4cplus::tcout" (?tcout@log4cplus@@3AAV?$basic_ostream@_WU?$char_traits@_W@std@@@std@@A) E:\TestCode\1026(thttpd)\thttpd\thttpd\thttpd.obj thttpd
Только что я обнаружил,что если я комментирую эти предложения,которые включают функцию "tcout", то все в порядке, этот пример о propertyconfig_test работает хорошо, почему?
Что я уже пробовал:
Попробуйте каждую скомпилированную модель и кодировку, прочтите множество подобных вопросов