注册 登录
  • 注册时,本站名称为:RGB空格3S博客,注意中间的空格。
  • 2018.8.14本站全面接入google广告
  • 2017.2.14今天收到45条恶意评论(全是外文),故评论时请填写必要信息,匿名评论全部拉黑,迫不得已而为之
  • 2017.1.27,2017年春节及至,我谨代表本人祝大家新春快乐,本人年终总结文章请访问:2016年终总结
  • 为防止恶意转载,本站全面禁止复制,并添加图片水印:RGB 3S博客www.ixxin.cn。
  • 本站正式更名为RGB 3S博客,本站将撤消所有非3S内容,其将转移到新博客江湖时代

编译C#版GDAL

C/C++ admin 6623次浏览 已收录 0个评论

下载SWIG:https://sourceforge.net/projects/swig/files/swigwin/
直接使用最新版本就行
解压GDAL源代码,将下载好的SWIG解压,找到swig.exe,配置nmake.opt.
GDAL_HOME = “D:\GDAL2.2.3\gdal-2.2.3\dll”
SWIG = D:\GDAL2.2.3\swigwin-3.0.12\swig.exe
使用VS本机工具命令提示,输入命令:
nmake /f makefile.vc
nmake /f makefile.vc install
nmake /f makefile.vc devinstall
转到D:\GDAL2.2.3\gdal-2.2.3\swig\csharp目录下,
C#下源码进行一下修改:
Q: 安全透明代码无法调用
A:打开D:\1.10.1\swig\csharp\AssemblyInfo.cs文件,将94行代码注释掉,解决安全透明代码无法调用的问题。

Q:未能找到类型或命名空间名称“IDisposable
A:将以下内容添加进./swig/csharp目录下AssemblyInfo.cs文件开头以及gdal,ogr和osr文件夹中的所有.cs文件的开头
using System;
using System.Runtime.InteropServices;
Q: 接口重复定义
osr\OsrPINVOKE.cs(192,10): error CS0111:
类型“OSGeo.OSR.OsrPINVOKE”已定义了一个名为“OsrPINVOKE”的具有相同参数类型的成员
osr\OsrPINVOKE.cs(188,10): (与前一个错误相关的符号位置)
NMAKE : fatal error U1077: “C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.EXE”: 返回代码“0x1”
A:在gdal-1.11.1\swig\csharp路径中gdal、ogr和osr三个目录中找到GdalPINVOKE.cs、OgrPINVOKE.cs、OsrPINVOKE.cs三个文件中分别找到GdalPINVOKE()、OgrPINVOKE()、OsrPINVOKE()三个静态函数,每个文件都有两个函数,注释掉其中一个就行。
Q: 接口成员名称错误
gdal\Band.cs(17,79): error CS0117: “OSGeo.GDAL.GdalPINVOKE”并不包含“BandUpcast”的定义 gdal\Dataset.cs(17,82): error CS0117: “OSGeo.GDAL.GdalPINVOKE”并不包含“DatasetUpcast”的定义 gdal\Driver.cs(17,81): error CS0117: “OSGeo.GDAL.GdalPINVOKE”并不包含“DriverUpcast”的定义 NMAKE : fatal error U1077: “C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.EXE”: 返回代码“0x1”
A:
在gdal-1.11.1\swig\csharp\gdal目录中找到Band.cs、Dataset.cs和Driver.cs三个文件,在三个函数Band()、Dataset()和Driver()继承的基类中找到GdalPINVOKE.BandUpcast,GdalPINVOKE.DatasetUpcast和GdalPINVOKE.DriverUpcast分别改为GdalPINVOKE.Band_SWIGUpcast,GdalPINVOKE.Dataset_SWIGUpcast和GdalPINVOKE.Driver_SWIGUpcast即可通过编译生成GDAL C#文件。
修改完之后,输入以下命令:
nmake -f makefile.vc interface
nmake -f makefile.vc
结果:
生成8个C# DLL,同样的还需要C++的一个dll,共9个dll。以及无数个exe。
Dll分别是:
gdal202.dll
osr_wrap.dll
gdalconst_wrap.dll
gdal_wrap.dll
ogr_wrap.dll
gdalconst_csharp.dll
gdal_csharp.dll
ogr_csharp.dll
osr_csharp.dll


xxin blog , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明编译C#版GDAL
喜欢 (0)
支付宝[853060844@qq.com]
分享 (0)
admin
关于作者:
坐标山科大遥感系小鲜肉一枚。
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址