Windows 下编译log4cxx (x64)

1. 编译环境

windows 10 x64, vs2017

2. 下载依赖apr, apr-iconv. apr-util

新建目录如下:
C:/work
 |_ apr
 |_ apr-iconv
 |_ apr-util
 |_ log4cxx(名称任意)

可以直接下载安装包,也可以使用svn检出项目,SVN检出地址http://apr.apache.org/anonsvn.html

注意:文件夹名称必须叫:apr,apr-iconv,apr-util
注意:apr和apr-util检出为1.5.x版本,1.6.x 缺少文件
+ SVN检出地址:
- apr: http://svn.apache.org/repos/asf/apr/apr/branches/1.5.x/
- apr-iconv:  http://svn.apache.org/repos/asf/apr/apr-iconv/trunk/
- apr-util:  http://svn.apache.org/repos/asf/apr/apr-util/branches/1.5.x/
- log4cxx 下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/logging/log4cxx/0.10.0/apache-log4cxx-0.10.0.zip

3. 下载Sed

下载目录:http://gnuwin32.sourceforge.net/packages/sed.htm下载sed的windows版本(二进制程序,以及运行的依赖dll) 并将 sed添加到系统环境变量

sed-4.2.1-bin.zip
sed-4.2.1-dep.zip

4. 在log4cxx目录下执行 configure.bat, configure-aprutil.bat

5. 使用vs打开 log4cxx\projects\log4cxx.dsw

6. 菜单“生成”-> “配置管理器” 将debug和release都调整为64位

7. 菜单“项目” -> “重定解决方案目标” ,4个项目依次执行,并将log4cxx设为启动项目

8. 编译

刚开始编译会出现类似于以下的错误:

src\main\include\log4cxx\spi\loggingevent.h(155): error C2252:只能在命名空间范围内显式实例化模板’ 错误.

解决方法:

  • a) 双击 “输出” 窗口中的错误行, 此时会在 “代码窗口” 中出现错误的位置.
  • b) 选择 LOG4CXX_LIST_DEF, 按键盘 F12, 此时会跳转到该宏的定义
  • c) 将
#define LOG4CXX_LIST_DEF(N, T) \  
template class LOG4CXX_EXPORT std::allocator<T>; \  
template class LOG4CXX_EXPORT std::vector<T>; \  
typedef std::vector<T> N  

替换为:

#define LOG4CXX_LIST_DEF(N, T) \  
typedef std::vector<T> N

如果报如下错误:
C2039 “insert_iterator”: 不是“std”的成员

解决办法:
在源文件头部添加:#include

备注:不建议使用log4cxx(编译太麻烦),建议使用spdlog

猜你喜欢

转载自blog.csdn.net/afgasdg/article/details/80018889