環境:
win7_x64,VS2015
開始:
一、下載xlslib庫
解壓到一個指定目錄,如E:\library\xlslib-package-2.5.0
二、創建VS2015項目
1. 將"E:\library\xlslib-package-2.5.0\xlslib\xlslib\build\msvc2012"文件夾復制一份,並重命名為msvc2015
2. 使用VS2015打開"E:\library\xlslib-package-2.5.0\xlslib\xlslib\build\msvc2015\xlslib.sln",打開期間會提示是否升級到VS2015編譯器,點擊升級。
三、配置VS2015項目
1. 修改"xlslib_dll"項目
"xlslib_dll"項目 -> "編輯 xlslib_dll.vcxproj",將重復的"<ClCompile Include="..\..\src\xlslib\formula.cpp" />"項,刪除一個,然后重新加載項目即可。
"xlslib_dll"項目 -> "C/C++" -> "預處理器" -> "預處理器定義" 添加 "_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS"
"xlslib_lib"項目 -> "屬性" -> "生成事件" -> "后期生成事件" -> "命令行" 替換為
echo $(SolutionDir)bin/x64_MSVC2015.$(Configuration)\createDLL -M$(Platform) -n$(OutDir)$(ProjectName).map -l$(IntDir) -i$(OutDir)$(ProjectName).lib -W$(SolutionDir)obj/$(ProjectName)_$(Platform)_MSVC2015.$(Configuration)\ $(SolutionDir)bin/x64_MSVC2015.$(Configuration)\createDLL -M$(Platform) -n$(OutDir)$(ProjectName).map -l$(IntDir) -i$(OutDir)$(ProjectName).lib -W$(SolutionDir)obj/$(ProjectName)_$(Platform)_MSVC2015.$(Configuration)\
"xlslib_lib"項目 -> "屬性" -> "常規" -> "輸出目錄" -> 替換為 "$(SolutionDir)bin/$(Platform)_MSVC2015.$(Configuration)\"
"xlslib_lib"項目 -> "屬性" -> "常規" -> "中間目錄" -> 替換為 "$(SolutionDir)obj/$(ProjectName)_$(Platform)_MSVC2015.$(Configuration)\"
2. 修改"createDLL"項目
"createDLL"項目 -> "C/C++" -> "預處理器" -> "預處理器定義" 添加 "_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS"
"createDLL"項目 -> "屬性" -> "常規" -> "輸出目錄" -> 替換為 "$(SolutionDir)bin/$(Platform)_MSVC2015.$(Configuration)\"
"createDLL"項目 -> "屬性" -> "常規" -> "中間目錄" -> 替換為 "$(SolutionDir)obj/$(ProjectName)_$(Platform)_MSVC2015.$(Configuration)\"
四、修改編譯錯誤
1. 修改"acconfig.win32.h"文件
刪除230行"typedef __int8 int8_t;"
2. 修改note.h文件
將46行"uint16_t sheet_notes"替換為"uint16_t sheet_notess"
3. 修改note.cpp文件
將342行"last_sheet.sheet_notes"替換為"last_sheet.sheet_notess"
將355行"sn.sheet_notes"替換為"sn.sheet_notes"
將358行"sn.sheet_notes"替換為"sn.sheet_notes"
4. 修改formula.cpp文件
將917行"function_property p = (function_property) {CELLOP_AS_VALUE, A_UNKNOWN};"替換為"function_property p{CELLOP_AS_VALUE, A_UNKNOWN};"
5. 修改createDLL.cpp文件
在385行添加"__xmm@",否則編譯"xlslib_dll"項目會出現"error LNK2001: 無法解析的外部符號 __xmm@00000000000000000000000000000002"
"__xmm@00000000000000000000000000000002"符號是在構造函數初始化列表中枚舉類型賦初始值時,VS2015編譯時自動創建的,在VS2010中不會創建這個符號,添加到filterSymbols數組是為了將不需要導出的符號過濾掉。