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
随机推荐
- DDD:架构思想的旧瓶新酒
DDD.DSL 和 DCI DDD 概念最早提出于 2004 年,作为一种软件开发的指导思想,DDD 对软件开发带来了诸多可能与方向,张晓龙认为 DDD 为软件开发带来的好处主要有以下几点: 首先,最 ...
- springboot整合shiro引用配置文件配置redis信息报空指针异常
1.问题现象: 上面这些属性是从application.properties配置文件中获取的,按常理来说应该能顺利获取到,但均未赋上值. 2.解决办法:(不得不说百度,千篇一律,最后用谷歌找到的) 最 ...
- 推荐python入门书籍(爬虫方面)
学爬虫,需要理论与实践相结合,Python生态中的爬虫库多如牛毛,urllib.urllib2.requests.beautifulsoup.scrapy.pyspider都是爬虫相关的库,但是如果没 ...
- 2019-2020-1 20199312《Linux内核原理与分析》第五周作业
使用库函数API获取当前时间 #include <stdio.h> #include <time.h> int main() { time_tt tt; struct tm * ...
- 51、[源码]-Spring容器创建-容器创建完成
51.[源码]-Spring容器创建-容器创建完成 12.finishRefresh();完成BeanFactory的初始化创建工作:IOC容器就创建完成: 1).initLifecycleProce ...
- HttpServletRequest获取浏览器、服务端和客户端信息
如何通过HttpServletRequest来获取到上面的属性呢? 1.引入开源工具 <!-- https://mvnrepository.com/artifact/eu.bitwalker/U ...
- easyui--权限管理
1.权限目的: 是为了让不同的用户可以操作系统中不同资源 直接点说就是不同的用户可以操作不同的菜单 核心:实现菜单权限的核心思想就是控制用户登录后台所传递的menuId(与树形菜单分类列段 ...
- MyBatis 接口注解方式代替mapper.xml
https://blog.csdn.net/m0_38068812/article/details/86566929 spring boot(8)-mybatis三种动态sql 或者 这个 1. 代 ...
- idea2018使用整理
1.idea怎么设置选中文件时,自动在左侧弹出文件所在位置及文件?
- 新版create-react-app+webpack4跨域
src/setupProxy.js 创建文件 const proxy = require('http-proxy-middleware'); module.exports = function(ap ...