环境:

  win7_x64,VS2015

开始:

一、下载xlslib库

  xlslib-package-2.5.0.zip

  解压到一个指定目录,如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数组是为了将不需要导出的符号过滤掉。

使用VS2015编译xlslib库的更多相关文章

  1. [转]Windows下使用VS2015编译openssl库

    转自:http://blog.csdn.net/alger_magic/article/details/52584171 目标:编译vs环境下openssl库 工具: 1. 编译环境win10+vs2 ...

  2. Qt 5.6 5.8 vs2015 编译静态库版本(有全部的截图)good

    安装Qt 去Qt官网下载Qt安装包  安装Qt和源码,一定要勾选source选项  添加bin到系统变量  工具 需要python3和 perl. vs2015 第三方工具,到官方下载安装  在命令行 ...

  3. vs2015 编译boost库

    1.下载boost官网安装包. https://dl.bintray.com/boostorg/release/1.66.0/binaries/ 注意:这里一定要选择好boost版本 如:  boos ...

  4. VS2015编译gdal库

    gdal下载地址:http://trac.osgeo.org/gdal/wiki/DownloadSource 修改nmake.opt中的一些配置.1. GDAL_HOME = “C:\warmerd ...

  5. VS2015编译GDAL库出现宏重复定义 snprintf: 宏重定义

    E:\OpenSourceGraph\gdal-1.10.0\gdal\port      cpl_config.h   20行 #define HAVE_VPRINTF 1#define HAVE_ ...

  6. VS2015编译gdal库 debug

    nmake -f makefile.vc DEBUG=1nmake /f makefile.vc installnmake /f makefile.vc devinstal E:\Visual Stu ...

  7. vs2015编译各种库

    1.编译libcurl https://www.jianshu.com/p/f82d3d18da93

  8. VS2015编译OpenSSL

    概述 OpenSSL 是一个开源的第三方库,它实现了 SSL(Secure SocketLayer)和 TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的 ...

  9. VS2015编译Qt5.7.0生成支持XP的静态库(很不错)

    一.编译工具 1.VS2015 编译Qt5.7.0的所需VS版本:Visual Studio 2013 (Update1)或Visual Studio 2015 (Update2).因为Update补 ...

随机推荐

  1. [HAOI2008]移动玩具

    这又是一道神奇的搜索题...只要记录每种状态...然后暴力判断这种状态往后一步的情况... 广搜出最优解即可... 呆码: #include<iostream> #include<c ...

  2. 阶段02JavaWeb基础day02&03JavaScript

    javascript知识体系 ECMAScript javascript与html结合方式 内部: <script type="text/javaScript">*** ...

  3. cocos2dx 3.17.1 导演类

    进入导演类的头文件,首先看到的是一些头文件的引用:CCPlatformMacros(适配),CCRef(继承的父类),CCVector(3.0以后的新向量),CCScene(场景),CCMath(数学 ...

  4. python基础16_闭包_装饰器

    不了解是否其他语言也有类似 python 装饰器这样的东西. 最近才发现ECMAScript6也是有生成器函数的,也有 yield  generator 装饰器的基础知识是闭包: # 闭包:嵌套函数, ...

  5. this.$nextTick()作用

    当data中的某个属性改变的时候,这个值并不是立即渲染到页面上,而是先放到watcher队列上(异步),只有当前任务空闲的时候才会去执行watcher队列上的任务.所以导致,改变的数据挂载到dom上会 ...

  6. web后台工作流程

    浏览器的主要功能是将用户选择的web资源呈现出来,它需要从服务器请求资源,并将其显示在浏览器窗口中,资源的格式通常是HTML,也包括PDF.image及其他格式.用户用URI(Uniform Reso ...

  7. git:distributed is the new centralized-part1

    PART 1 梗概 git文件流转有三个工作区域:工作目录(working directory).暂存区域(staging area).本地仓库(repository).文件处于上述三个工作区域的状态 ...

  8. java对excel操作

    package test; import jxl.*; import jxl.Cell; import java.io.*; /** * 读取excel */ public class TestExc ...

  9. ivew Tooltip

    在使用ivew的Tooltip时发生错位,添加属性transfer,避免受父样式影响 发生如上错误时,只需添加属性transfer无需赋值

  10. Hadoop集群启动

    1.初始化集群 要启动Hadoop集群,需要启动HDFS和YARN两个集群 注意:首次启动HDFS时,必须对其进行格式化操作.本质上是一些清理和准备工作, 因为此时的HDFS在物理上还是不存在的 命令 ...