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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章