win64 编译GDAL+GEOS+PROJ4 For C++
- PROJ4库编译
- GEOS库编译
- GDAL+GEOS+PROJ4编译
1.PROJ4库编译。主要提供坐标系转换功能,不需要的略过。
(1) proj4源码可以到官网下载: https://proj4.org/download.html#
下载后解压。打开解压后的文件夹,找到nmake.opt,用文本编辑器打开找到instdir,修改输出路径。这里用Visual Studio打开,修改并保存。
(2) 在开始菜单中找到Visual Studio 2013的工具,vs2013 x64本机工具命令提示,打开。
(3) 切换到proj4所在的目录。
(4) 输入编译指令。(每一行输入完毕,回车执行后再输入下一行。注意空格。)
nmake /f makefile.vc
nmake /f makefile.vc install-all
nmake /f makefile.vc clean (清理刚才编译的临时文件,如不清理,下次编译将使用本地输出,可能会导致错误。此处我们先不清理,后面编译GDAL用到Proj4的部分临时文件。)
(5) 测试。
切换到proj.exe目录下,我这里是 D:\GDAL\PROJ\bin
输入proj +proj=utm +zone=11 +ellps=WGS84 回车
输入118d52’31″W 31d0’0″N 回车
输出:320959.50 3431111.32
2.Geos库编译,与Proj4的编译类似。
(1) 到geos官网下载源码:http://trac.osgeo.org/geos
解压。打开nmake.opt,将WIN64=NO 修改为 WIN64=YES,保存。
(2) 在开始菜单中找到Visual Studio 2013的工具,vs2013 x64本机工具命令提示,打开。切换到geos所在的目录,输入命令:
nmake /f makefile.vc
(3) 测试参见:https://www.cnblogs.com/denny402/p/4965213.html
3. GDAL编译。
(1) 到gdal官网下载源码: https://trac.osgeo.org/gdal/wiki/DownloadSource
或者下载历史版本: http://download.osgeo.org/gdal/
(2) 修改gdal输出路径,用VS打开nmake.opt找到GDAL_HOME,也可以不修改。
(3) 支持64位编译,用VS打开nmake.opt找到”#WIN64=YES“,将前面注释的#去掉,改为”WIN64=YES“
找到”SYM_PREFIX=_“,改为”SYM_PREFIX=“。保存。
(4) VS打开makefile.vc定位到BASE_INCLUDE ,将
BASE_INCLUDE = /INCLUDE:_GDALSimpleImageWarp@36 /
/INCLUDE:_GDALReprojectImage@48 /
/INCLUDE:_GDALComputeMedianCutPCT@32 /
/INCLUDE:_GDALDitherRGB2PCT@28 /
/INCLUDE:_OCTNewCoordinateTransformation@8 $(VB6_SAFEARRAYSYM)
修改为:
BASE_INCLUDE = /INCLUDE:$(SYM_PREFIX)GDALSimpleImageWarp /
/INCLUDE:$(SYM_PREFIX)GDALReprojectImage /
/INCLUDE:$(SYM_PREFIX)GDALComputeMedianCutPCT /
/INCLUDE:$(SYM_PREFIX)GDALDitherRGB2PCT /
/INCLUDE:$(SYM_PREFIX)OCTNewCoordinateTransformation $(VB6_SAFEARRAYSYM)
就是将前面的下划线去掉,然后删除@开始的数字。
(5) 集成Proj4。
VS打开GDAL源码文件夹下的nmake.opt找到是否集成Proj4的代码
#PROJ_FLAGS = -DPROJ_STATIC
#PROJ_INCLUDE = -Id:\projects\proj.4\src
#PROJ_LIBRARY = d:\projects\proj.4\src\proj_i.lib
改为
PROJ_FLAGS = -DPROJ_STATIC
PROJ_INCLUDE = -ID:\GDAL\proj-5.0.0\src
PROJ_LIBRARY = D:\GDAL\proj-5.0.0\src\proj_i.lib
说明:确保src下面有编译好的proj_i.lib文件。
(6) 集成Geos。
VS打开GDAL源码文件夹下的nmake.opt找到是否集成Proj4的代码
#GEOS_DIR=C:/warmerda/geos
#GEOS_CFLAGS = -I$(GEOS_DIR)/capi -I$(GEOS_DIR)/source/headers -DHAVE_GEOS
#GEOS_LIB = $(GEOS_DIR)/source/geos_c_i.lib
改为
GEOS_DIR=D:\GDAL\geos-3.6.2
GEOS_CFLAGS = -I$(GEOS_DIR)/capi -I$(GEOS_DIR)/include -DHAVE_GEOS
GEOS_LIB = $(GEOS_DIR)/src/geos_c_i.lib
说明:确保src下面有编译好的geos_c_i.lib文件。
(7) 编译GDAL
在开始菜单中找到Visual Studio 2013的工具,vs2013 x64本机工具命令提示,打开。切换到GDAL源码所在的目录,
输入命令:
nmake /f makefile.vc WIN64=TRUE DEBUG=TRUE
nmake /f makefile.vc WIN64=TRUE DEBUG=TRUE install
nmake /f makefile.vc WIN64=TRUE DEBUG=TRUE devinstall
如果不修改路径,会在路径下C:\warmerda\bld生成编译好的文件。
说明:DEBUG=TRUE,是生成调试版本。64位调试在VS里面需要设置环境,找到项目的Debug文件夹(生成工程exe的文件夹)把gdal111.dll、geos_c.dll、proj.dll拷进去,而且需要gdal源码文件夹下编译生成的gdal.lib、gdal_i.exp、gdal_i.lib、gdal111.ilk、gdal111.pdb几个文件。
参考资料:
1. https://blog.csdn.net/sf2gis2/article/details/50686728
2. https://blog.csdn.net/bjlqw/article/details/43838211
3. https://www.cnblogs.com/yhlx125/p/3632157.html
4. https://blog.csdn.net/liminlu0314/article/details/6144899
5. https://blog.csdn.net/liminlu0314/article/details/7363565
转载自:https://blog.csdn.net/abc2008151521/article/details/80313904