У меня есть два проекта с почти одинаковой конфигурацией в Visual Studio 2010
Один с консолью работает и не дает проблем с заявлением
SharedAppenderPtr myAppender(new FileAppender("myLogFile.log"));
В то время как другой проект DLL-проект дает проблемы с тем же заявлением
SharedAppenderPtr myAppender(new FileAppender("myLogFile.log"));
Сообщение об ошибке:
Ошибка 3 ошибка C2664: ‘log4cplus :: FileAppender :: FileAppender (const log4cplus :: tstring &, std :: ios_base :: openmode, bool) ‘: невозможно преобразовать параметр 1 из’ const char [10] ‘в’ const log4cplus :: tstring &’
Любые предложения о том, как я мог решить эту проблему?
Попробуйте обернуть "myLogFile.log"
как это: LOG4CPLUS_TEXT("myLogFile.log")
, Вы также можете использовать _T()
макрос, так как вы находитесь в Windows с Visual Studio.
Я не знаю какой тип log4cplus::tstring
но предполагая, что это typedef
для типа, аналогичного std::basic_string<cT>
(возможно, даже std::basic_string<cT>
с типом cT
Кроме как char
) вы можете попробовать один из них:
SharedAppenderPtr app1(new FileAppender(L"myLogFile.log"));
std::string name("myLogFile.log");
SharedApppenderPtr app2(new FileAppender(log4cplus::tstring(name.begin(), name.end())));