VS2015编译GDAL库出现宏重复定义 snprintf: 宏重定义
E:\OpenSourceGraph\gdal-1.10.0\gdal\port cpl_config.h 20行
#define HAVE_VPRINTF 1
#define HAVE_VSNPRINTF 1
#define HAVE_SNPRINTF 1
#if defined(_MSC_VER) && (_MSC_VER < 1500)
# define vsnprintf _vsnprintf
#endif
//#define snprintf _snprintf
#if defined(_MSC_VER) && (_MSC_VER < 1900)
# define snprintf _snprintf
#endif
----------------------------------------------------------
https://www.cnblogs.com/liulunheng/articles/7044292.html
https://www.cnblogs.com/arxive/p/7854167.html
1 准备工作
gdal官网下载源码,准备好编译工具,对于.net开发人员来讲,vs肯定最为熟悉了,但只会C#的童鞋,在安装vs时,可能就只选了C#这一种语言,那就悲剧了,因为压根就没有C++环境,最基础的C++库文件都没有,如何编译呢,所以这里重要的事说三遍,必须是安装了VC++的VS才能进行编译。
此外,由于后面要在C#程序中调用,C#的接口dll也是少不了要编译的,这个需要借助swig,所以下载一个swig也是必不可少的,需要的版本可以参考gdal官网:http://trac.osgeo.org/gdal/wiki/GdalOgrCsharpCompile
然后就是修改nmake.opt文件,主要有两处,一处是GDAL_HOME,指定源码所在文件夹,一般建议将文件夹的名称改成gdal,并且放在C盘根目录下,这样可方便后面操作,另外一处是90行,swig.exe的路径,可先将下载后swig程序包解压到C盘,就可以获得swig.exe所在位置的绝对路径。
除此之外,由于gdal1.8后增加了对路径是否为UTF8编码的判断,直接编译后获得的exe程序不支持中文路径,在利用命令行调用原生exe处理数据时,有一些麻烦,这里可以在编译前通过修改源码来解决这个问题。将下面一句
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO");
分别添加到GDALAllRegister()函数【GDAL_HOME\frmts\gdalallregister.cpp73行左右】和OGRRegisterAll()函数【GDAL_HOME\ogr\ogrsf_frmts\generic\ogrregisterall.cpp38行左右】中。
2 编译gdal.dll
从windows开始菜单的vs应用程序文件夹中打开visual stuido 命令提示,然后先后输入以下三行命令,即可完成gdal.dll和原生exe的编译,编译结果在bin文件夹中。
nmake /f makefile.vc
nmake /f makefile.vc install
nmake /f makefile.vc devinstall
第一个命令是编译GDAL
第二个、第三个命令是将生成的头文件、静态库、动态库复制到GDAL_HOME目录。
如果需要编译debug模式,就将第一个命令改成nmake -f makefile.vc DEBUG=1
VS2015编译GDAL库出现宏重复定义 snprintf: 宏重定义的更多相关文章
- VS2015编译gdal库
gdal下载地址:http://trac.osgeo.org/gdal/wiki/DownloadSource 修改nmake.opt中的一些配置.1. GDAL_HOME = “C:\warmerd ...
- VS2015编译gdal库 debug
nmake -f makefile.vc DEBUG=1nmake /f makefile.vc installnmake /f makefile.vc devinstal E:\Visual Stu ...
- 自定义编译gdal库
作者:朱金灿 来源:http://blog.csdn.net/clever101 使用下载下来的gdal库的makefile来编译gdal库,生成的gdal库的名字debug版本和release版本都 ...
- 使用VS2015编译xlslib库
环境: win7_x64,VS2015 开始: 一.下载xlslib库 xlslib-package-2.5.0.zip 解压到一个指定目录,如E:\library\xlslib-package-2. ...
- [转]Windows下使用VS2015编译openssl库
转自:http://blog.csdn.net/alger_magic/article/details/52584171 目标:编译vs环境下openssl库 工具: 1. 编译环境win10+vs2 ...
- C++编译错误 --- 成员函数定义在 .h 文件中出现重定义错误(Error LNK 2005)
今天写了一个简单的类,定义在 .h 文件中, 类很简单就将其成员函数定义在了一起(class类后面).运行的时候出现了如下图所示的编译错误(error LNK2005) 查资料,大部分都是说需要加上 ...
- Qt 5.6 5.8 vs2015 编译静态库版本(有全部的截图)good
安装Qt 去Qt官网下载Qt安装包 安装Qt和源码,一定要勾选source选项 添加bin到系统变量 工具 需要python3和 perl. vs2015 第三方工具,到官方下载安装 在命令行 ...
- vs2015 编译boost库
1.下载boost官网安装包. https://dl.bintray.com/boostorg/release/1.66.0/binaries/ 注意:这里一定要选择好boost版本 如: boos ...
- vs2015编译各种库
1.编译libcurl https://www.jianshu.com/p/f82d3d18da93
随机推荐
- Redis 从入门到放弃
Redis 从入门到放弃 http://www.iocoder.cn/Fight/Redis-went-from-getting-started-to-quitting/
- 蓝桥杯 ALGO-156 表达式计算 JAVA代码 栈的应用
算法训练 表达式计算 时间限制:1.0s 内存限制:256.0MB 问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个 ...
- PHP 把返回的数据集转换成Tree树
/** * 把返回的数据集转换成Tree * @access public * @param array $list 要转换的数据集 * @param string $pid parent标记字段 * ...
- SpringBoot自动配置的魔法是怎么实现的
SpringBoot 最重要的功能就是自动配置,帮我们省去繁琐重复地配置工作.相信用过SpringBoot的人,都会被它简洁的步骤所惊讶.那么 SpringBoot 是如何实现自动配置的呢? 在这之前 ...
- 在vue中使用css预编辑器
vue中使用less 安装less依赖,npm install less less-loader --save vue中使用sass npm install --save-dev sass-loade ...
- 16 关于webpack和npm中几个问题的说明
1.json里面不能写注释 2.'webpack-dev-server'不是内部或外部命令,也不是可运行的程序或批处理文件. 注意:webpack-dev-server包只需要本地安装就行,不用全局安 ...
- 6 webpack-dev-server配置命令的第2种方式
// 导入webpack模块,这是启用热更新的第2步 const webpack=require('webpack') devServer:{ // 这是配置dev-server命令参数的第二种形式, ...
- Java8新特性--Optional
Java 8引入了一个新的Optional类.Optional类的Javadoc描述如下: 这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会 ...
- 二十一.构建memcached服务、LNMP+memcached、PHP的本地Session信息、PHP实现session共享
proxy client web1 web2 1.构建memcached服务 ]# yum -y install memcached ]# cat /etc/sysconfig/memcached ...
- vue自定义弹框
vue 全局自定义简单弹框 https://www.jianshu.com/p/1307329aa09e https://www.cnblogs.com/crazycode2/p/7907905.ht ...