`

编译log4cpp 1.0

 
阅读更多
编译log4cpp 1.01、下载地址http://log4cpp.sourceforge.net
log4cpp只提供了VC6的项目文件,在msvc6目录下
2、用vs2005打开msvc6.dsw文件,打开时会有错误弹出,
分 析:因为log4cpp在生成NTEventLogAppender.dll时,需要连接NTEventLogCategories.mc文件。所以,项 目设置了自定义的生成步骤去生成NTEventLogAppender.dll。但从vc6的工程文件转换时,这些步骤却没有正确的转换过来。从而出现上 述问题。

解决方法:重新填写Custom Build Step项。

其中,CommandLine填写以下内容:
if not exist $(OutDir) md $(OutDir)
"mc.exe" -h $(OutDir) -r $(OutDir) $(ProjectDir)..\$(InputName).mc
"RC.exe" -r -fo $(OutDir)\$(InputName).res $(OutDir)\$(InputName).rc
"link.exe" /MACHINE:IX86 -dll -noentry -out:$(OutDir)\NTEventLogAppender.dll $(OutDir)\$(InputName).res

转换完项目后有多个工程只有留下log4cpp和log4cppDll,
或者删除两个项目中的NTEventLogCategories.mc 文件引用
3、要解决一个 mode_t 类型可能出现的重定义问题,需要打开以下文件
src\include\log4cpp\config-win32.h
查找 typedef int mode_t; 改为以下内容,(即加上 namespace log4cpp)

namespace log4cpp
{
  typedef int mode_t;
}
4、现在可以开始编译了,编译log4cpp时没有问题,但编译log4cppdll时出错,连接时找不到符号地址,解决方式就是将FactoryParams.cpp和Localtime.cpp加入工程即可。

5、目标工程包含库
log4cpp.lib ws2_32.lib(要选择库连接方式相同的库)


6、有人遇到问题,我没遇到:log4cppDLL项目编译时会报8个连接错误,提示符号std::_Tree找不到
解决方案:
将include\log4cpp\FactoryParams.hh文件中的
const_iterator find(const std::string& t) const;

修改为
const_iterator find(const std::string& t) const { return storage_.find(t); }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics