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
随机推荐
- WCF服务代理类-学习
类:ServiceDescriptionImporter Class 公开一种为 XML Web services 生成客户端代理类的方法. 地址:https://docs.microsoft.com ...
- CPC组队赛训练记录
2017中国大学生程序设计竞赛-哈尔滨站 (rank 39)solved 4 补 1 2018 CCPC 吉林 solved 5 2017CCPC秦皇岛 solved 4 待补题 2017ACM/IC ...
- m_strcpy
自己实现strcpy函数 #include <stdio.h> #include <assert.h> //如果它的条件返回错误,则终止程序执行 char *m_strcpy( ...
- JSOI2012 玄武密码 和 HDU2222 Keywords Search
玄武密码 给若干模式串和一个文本串.求每个模式串在文本串上能匹配的最大前缀长度. N<=10^7,M<=10^5,每一段文字的长度<=100. jklover的题解 将模式串建成一个 ...
- 阿里 Linux服务器外网无法连接MySQL解决方法
我的服务器买的是阿里云ECS linux系统.为了更好的操作数据库,我希望可以用navicat for mysql管理我的数据库. 当我按照正常的模式去链接mysql的时候, 报错提示: 2003- ...
- eclipse转到idea过程中的基本设置...
1.在写mapper.xml文件中有许多黄黄绿绿的警告 - 黄色的是没有用idea链接数据库,连上就ok,不连的话,这样:Prefernces ⇒ Editor ⇒ Inspections ⇒ SQL ...
- 前端面试题-JavaScript
引用GitHub 上 ltadpoles的前端面试 https://github.com/ltadpoles 目录 1. JavaScript 有哪些数据类型 2. 怎么判断不同的JS数据类型 ...
- BZOJ 1495 [NOI2006]网络收费(暴力DP)
题意 给定一棵满二叉树,每个叶节点有一个状态0/10/10/1,对于每两个叶节点i,ji,ji,j,如果这两个叶节点状态相同但他们的LCALCALCA所管辖的子树中的与他们状态相同的叶节点个数较少(少 ...
- 去除IDEA中xml黄色背景
idea版本:IntelliJ IDEA 2019.2.1 在编写mybatis的xml中会出现大面积黄色背景提示,看起来比较不舒服. 去掉黄色背景颜色 1.打开File->Settings-& ...
- 普通的java Ftp客户端的文件上传
关于ftp上传文件其实并不难,但有时候面对现实的环境还是很蛋疼的,今天我就分享一下,普通的上传文件文件至FTP的方式,它满足大部分FTP,但也有特别的,下篇博客会提及到. 下面我用一个FtpUtil, ...