在VS2012中使用时出现log4cplus链路错误

log4cplus link errors when used in VS2012

本文关键字:log4cplus 链路 错误 VS2012      更新时间:2023-10-16

我已经在VS2012中下载并编译了log4cplus。编译很好(调试和发布)我尝试在我的代码中使用它,但我收到 3 个链接错误,我尝试过的任何内容都没有删除它们。我正在使用 log4cplus 项目中的相同包含,以及我编译的库(尝试了所有 3 个......调试版本和 log4cplusS.lib

我仍然得到这些:

错误 LNK2019: 未解析的外部符号"__declspec(DLL导入) 类 std::basic_ostringstream,class std::分配器> & __cdecl log4cplus::d etail::get_macro_body_oss(void)" (_imp?get_macro_body_oss@detail@log4cplus@@YAAAV?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@XZ) 在函数"int __cdecl Prepare(class) 中引用 标准::basic_string,类 标准::分配器> &,类 标准::basic_string,类 标准::分配器> &,类 标准::basic_string,类 std::分配器> &,int *,int *,int *)" (?Prepare@@YAHAAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@00PAH11@Z)

错误 LNK2019: 未解析的外部符号"__declspec(DLL导入) 公共:静态类 log4cplus::记录器__cdecl log4cplus::Logger::getInstance(class std::basic_string,class std::allocator> const &)" (_imp?getInstance@Logger@log4cplus@@SA?AV12@ABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z) 在函数"int __cdecl Prepare(class) 中引用 标准::basic_string,类 标准::分配器> &,类 标准::basic_string,类 标准::分配器> &,类 标准::basic_string,类 std::分配器> &,int *,int *,int *)" (?Prepare@@YAHAAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@00PAH11@Z)

怎么了?

我的代码很简单,在我的dll cpp中:

在我添加的 cpp 顶部

static Logger logger;

在我添加的函数之一中:

logger = Logger::getInstance(LOG4CPLUS_TEXT("MyDLL"));
LOG4CPLUS_INFO(logger, LOG4CPLUS_TEXT("Prepare Starts"));

很可能您已经使用 Release 配置编译了 log4cplus。您将需要使用Release_Unicode(与Debug配置类似)。