log4cplus已经更新到1.2 RC5。
下载下来,进行编译发现两个问题。经过修改后才能成功编译。
编译过程:
1.下载源码log4cplus-1.2.0-RC5.zip文件,最新版。找不到可以到谷歌,或者必应上查找就有下载的地址了。
2.解压源码
3.进入到控制台,进入到msvc10目录下执行 ..\scripts\msvc10_to_msvc11.cmd log4cplus.sln
4.此时在msvc10同级目录下增加了msvc11的目录,进入此目录打开log4cplus.sln即可。
5.编译,出现多个错误。但是主要是由于
LOG4CPLUS_HAVE_CXX11_SUPPORT,定义的问题。
由于visual studio 2012还不支持 = delete ;语法因此需要将这个宏定义注释掉。
然后重新编译,出现找不到标识符 FreeAddrInfoA的错误信息。在internal\socket.h文件中
由于支持FreeAddrInfoA函数的最低操作系统为windows 2003,因此
_WIN32_WINNT 必须大于等于 0x0502
但是项目中的值是0x0501。查看方法
项目->项目属性页->c/C++->预处理器->预处理器定义点击就能看到。但是不能修改,只能查看项目文件查找修改的方法。
关闭项目开发环境,发现msvc11目录下比普通的项目多了个log4cplus.props文件,打开已开果然是他。
定位到PreprocessorDefinitions,_WIN32_WINNT=0x0501;WINVER=0x0501修改为_WIN32_WINNT=0x0502;WINVER=0x0502即可。
重新打开项目成功编译。