栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

window环境下编译GDAL3.4.0

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

window环境下编译GDAL3.4.0

window环境下编译GDAL3.4.0
  • 一、编译过程中用到的文件
  • 二、Geos编译
  • 三、Proj编译
  • 四、如何查看MSVC_VER值
  • 五、修改文件:nmake.opt

一、编译过程中用到的文件

操作系统:Windows 11 专业版 21H2
Visual Studio IDE:Microsoft Visual Studio Community 2022 (64 位) - Current
GDAL版本:GDAL:3.4.0
GEOS版本:geos-3.10.1
PROJ版本:proj-8.1.1
SWIG版本:swigwin-4.0.2
FileGDB_API版本:FileGDB_API_1.5.2FileGDB_API_VS2019

二、Geos编译

1、 打开文件:C:devgeos-3.10.1INSTALL,清楚的写出了在各个平台下如何编译
2、 打开vs2022,选择文件-打开-cmake,找到CMakeLists.txt文件
3、 在vs中选择生成即可(切换到release)(release第一遍编译报错,继续编译一下就可以了)

  1. 编译后的dll和lib文件在文件夹中C:OpenSourcegeos-3.10.1outbuildx64-Releaselib和C:OpenSourcegeos-3.10.1outbuildx64-Releasebin
    5.将文件复制到指定目录:
    C:OpenSourcegeos-3.10.1outbuildx64-Releasecapi geos_c.h
    复制到
    C:OpenSourcegeos-3.10.1capi geos_c.h
三、Proj编译

依据proj官网的编译方法.

特别的,不知道哪里配置错误,默认编译出来是debug版本,编译gdal的时候报错,打开文件:“CMakeLists.txt”,找到下面的代码,这里把判断注释掉,直接默认设置为Release版本即可

#Set a default build type for single-configuration cmake generators if
#no build type is set.
#if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
#endif()

四、如何查看MSVC_VER值

在代码中敲下面的代码,鼠标放上去就看到了
#if _MSC_VER ==1000
#endif

五、修改文件:nmake.opt

将
MSVC_VER=1500
修改为:
MSVC_VER=1930

将:
SWIG = swig.exe
修改为:
SWIG = D:OpenSourceswigswigwin-2.0.12swig.exe

取消注释:
#WIN64=YES
修改为:
WIN64=YES

取消注释并修改:
#Uncomment for GEOS support (GEOS >= 3.1.0 required)
#GEOS_DIR=C:/warmerda/geos
#GEOS_CFLAGS = -I ( G E O S D I R ) / c a p i − I (GEOS_DIR)/capi -I (GEOSD​IR)/capi−I(GEOS_DIR)/source/headers -DHAVE_GEOS
#GEOS_LIB = KaTeX parse error: Double subscript at position 25: …)/source/geos_c_̲i.lib **修改为:** …(GEOS_DIR)/capi -I$(GEOS_DIR)/include -DHAVE_GEOS
GEOS_LIB = $(GEOS_DIR)/out/build/x64-Release/lib/geos_c.lib

取消注释并修改:
#FGDB_ENABLED = YES
#FGDB_PLUGIN = YES
#FGDB_SDK = C:UsersrburhumDesktopFileGDB_API_VS2008_1_0beta3
#FGDB_INC = $(FGDB_SDK)include
#FGDB_LIB = $(FGDB_SDK)libFileGDBAPI.lib
修改为:
FGDB_ENABLED = YES
#FGDB_PLUGIN = YES
FGDB_SDK = C:OpenSourceFileGDB_API_VS2019
FGDB_INC = $(FGDB_SDK)include
FGDB_LIB = $(FGDB_SDK)lib64FileGDBAPI.lib

参考网站:https://trac.osgeo.org/gdal/wiki/FileGDB#no1
FileGDB_API_1_4编译报错

取消注释并修改:
#PROJ stuff (required dependency: PROJ >= 6)
#PROJ_INCLUDE = -Id:install-projlocalinclude
#Note: add shell32.lib is needed starting with PROJ 7.0 in some circumstances
#for static linking. See https://github.com/OSGeo/gdal/issues/2488
#And ole32.lib also since PROJ 7.1 (see https://github.com/OSGeo/gdal/issues/2743)
#PROJ_LIBRARY = d:install-projlocallibproj_6_0.lib shell32.lib ole32.lib
修改为:
#PROJ stuff (required dependency: PROJ >= 6)
PROJ_INCLUDE = -IC:devprojsrc
#Note: add shell32.lib is needed starting with PROJ 7.0 in some circumstances
#for static linking. See https://github.com/OSGeo/gdal/issues/2488
#And ole32.lib also since PROJ 7.1 (see https://github.com/OSGeo/gdal/issues/2743)
PROJ_LIBRARY = C:/dev/proj/_build.vs2022/lib/proj.lib shell32.lib ole32.lib

取消注释并修改:
#SQLite Libraries
#SQLITE_INC=-IN:pkgsqlite-win32
#SQLITE_LIB=N:pkgsqlite-win32sqlite3_i.lib
修改为:
#SQLite Libraries
SQLITE_INC=-IC:ProgramDataMiniconda3pkgssqlite-3.36.0-h2bbff1b_0Libraryinclude
SQLITE_LIB=C:ProgramDataMiniconda3pkgssqlite-3.36.0-h2bbff1b_0Librarylibsqlite3.lib

取消注释并修改:
#Uncomment to use libcurl (DLL by default)
#The cURL library is used for WCS, WMS, GeoJSON, SRS call importFromUrl(), WFS, CouchDB, /vsicurl/ etc.
#CURL_DIR=C:curl-7.15.0
#CURL_INC = -I$(CURL_DIR)/include
#Uncomment following line to use libcurl as dynamic library
#CURL_LIB = $(CURL_DIR)/libcurl_imp.lib wsock32.lib wldap32.lib winmm.lib
#Uncomment following two lines to use libcurl as static library
#CURL_LIB = $(CURL_DIR)/libcurl.lib wsock32.lib wldap32.lib winmm.lib
#CURL_CFLAGS = -DCURL_STATICLIB

修改为:
#Uncomment to use libcurl (DLL by default)
#The cURL library is used for WCS, WMS, GeoJSON, SRS call importFromUrl(), WFS, CouchDB, /vsicurl/ etc.
CURL_DIR=C:ProgramDataMiniconda3pkgslibcurl-7.78.0-h86230a5_0Library
CURL_INC = -I$(CURL_DIR)/include
#Uncomment following line to use libcurl as dynamic library
#CURL_LIB = $(CURL_DIR)/libcurl_imp.lib wsock32.lib wldap32.lib winmm.lib
#Uncomment following two lines to use libcurl as static library
CURL_LIB = $(CURL_DIR)/lib/libcurl.lib wsock32.lib wldap32.lib winmm.lib
CURL_CFLAGS = -DCURL_STATICLIB

取消注释并修改为:
#if using an external libtiff library. Must be libtiff >= 4.0
TIFF_INC = -IC:ProgramDataMiniconda3pkgslibtiff-4.2.0-hd0e1b90_0Libraryinclude
TIFF_LIB = C:ProgramDataMiniconda3pkgslibtiff-4.2.0-hd0e1b90_0Librarylib/tiff.lib

管理员身份运行
x64 Native Tools Command Prompt for VS 2022 Current

执行下面的命令

nmake /f makefile.vc MSVC_VER=1930 WIN64=YES

nmake /f makefile.vc install
nmake /f makefile.vc devinstall

cd swigcsharp

nmake /f makefile.vc interface

nmake /f makefile.vc
nmake /f makefile.vc install

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1023501.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号