文档章节

编译GDAL2.3.0的C#接口

会哭的鳄鱼
 会哭的鳄鱼
发布于 01/20 21:32
字数 518
阅读 2
收藏 0

编译完GDAL和JAVA接口后,如果需要使用C#调用,就需要编译C#的接口。方法如下:

注意:使用的SWIG版本不能使用太高版本,否则,会报一堆的类型未找到的错误,我是无从下手。使用swig2.0.7(据说2.0.6到2.0.9)表现都是一样的问题,后面详细解释修改代码的方法。

配置好nmake.opt里的swig后。启动vs2015的64位命令行工具,并切到gdal源码的swig/csharp目录下。执行如下命令:

nmake /f makefile.vc interface

等待执行完后,先不要编译,进入到swig/csharp目录下,修改如下生成的源码文件:

swig\csharp\gdal\GdalPINVOKE.cs

swig\csharp\ogr\OgrPINVOKE.cs

swig\csharp\osr\OsrPINVOKE.cs 

这三个文件,分别按下图注释掉多余的代码:

然后分别打开如下三个文件

csharp\gdal\Band.cs

csharp\gdal\Dataset.cs

csharp\gdal\Driver.cs

修改第17行,将红色位置部分按如下修改,解决接口成员名错误问题。

Band.cs文件:

 public Band(IntPtr cPtr, bool cMemoryOwn, object parent) : base(GdalPINVOKE.Band_SWIGUpcast(cPtr), cMemoryOwn, parent)

Dataset.cs文件:

 public Dataset(IntPtr cPtr, bool cMemoryOwn, object parent) : base(GdalPINVOKE.Dataset_SWIGUpcast(cPtr), cMemoryOwn, parent)

Driver.cs文件:

 public Driver(IntPtr cPtr, bool cMemoryOwn, object parent) : base(GdalPINVOKE.Driver_SWIGUpcast(cPtr), cMemoryOwn, parent) {
完成以上修改后,就可以切回到命令行窗口,切换到swig/csharp目录下执行如下命令:

nmake /f makefile.vc

等待一会儿,就会辨已完成,然后执行

nmake /f makefile.vc install

会把编译出来的8个dll复制到安装目录下的csharp目录下。

把gdal203.dll复制到这个目录下备用。

使用的时候,c#工程下引入这8个文件,然后把gdal203.dll这个文件系统路径或则工程路径对应的目录下,就可以使用了。

 

© 著作权归作者所有

共有 人打赏支持
会哭的鳄鱼
粉丝 8
博文 57
码字总数 59522
作品 0
郑州
技术主管
私信 提问
C# 中利用运行时编译实现泛函

引言 我想要分享一个新模式,我开发来用于在 C# 中利用运行时编译进行泛型计算。 过去的几年里我已经在编程并且看到许多在 C# 中实现泛型数学的例子,但是没有一个能做得非常地好。在第一部分...

oschina
2015/05/19
4.1K
13
C#泛型

所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型,泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。 C#泛型赋予了代码更强的类型安全...

cxycappuccino
2011/09/22
0
0
C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

  前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻。如果没有看过前面的文章,请到我的博客首页查看。   前面我们都是在一个项目中写了一个类来测试的,...

雲霏霏
2014/08/28
0
0
Visual C# .NET 2003 语言的改变

Visual C# .NET 2003 语言的改变 Prashant Sridharan Microsoft Corporation 2002年12月30日 适用于: Microsoft Visual Studio® C# 2003 摘要:为了与欧洲计算机制造商协会 (ECMA) 的 C# 规...

晨曦之光
2012/03/09
80
0
Effective C# 条款1

属性的优点: 遵循面向对象的原则 具有弹性 1. 1 遵循面向对象的原则 属性在使我们可以将数据成员暴露为公有接口的同时,还为我们提供了在面向对象环境中所期望的封装。从表面看起来像是数据...

长平狐
2012/06/11
36
0

没有更多内容

加载失败,请刷新页面

加载更多

Typora快捷键

无序列表:输入-之后输入空格 有序列表:输入数字+“.”之后输入空格 任务列表:-[空格]空格 文字 标题:ctrl+数字 表格:ctrl+t 生成目录:[TOC]按回车 选中一整行:ctrl+l 选中单词:ctrl+...

AzureMonkey
今天
2
0
SpringBoot2.x配置Cors跨域

1 跨域的理解 跨域是指:浏览器A从服务器B获取的静态资源,包括Html、Css、Js,然后在Js中通过Ajax访问C服务器的静态资源或请求。即:浏览器A从B服务器拿的资源,资源中想访问服务器C的资源。...

hengbao5
今天
4
0
mybatis(7) - 分页

一般程序在处理sql分页的场景,要么选择在程序中对所有的结果集sublist,要么在写sql时指定limit。那如何利用mybatis的特性在处理分页呢? 分页插件 适用于数据量大的情况下。 在真正执行sql...

noob_fly
今天
10
0
SpringBoot之使用jpa/hibernate

Springboot版本是2.1.3.RELEASE 1、依赖 List-1.1 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId></dependenc......

克虏伯
今天
7
0
安卓手机如何快速投屏到windows(10/8.1/7)电脑上

前提: 手机和电脑连接的网络必须在同一局域网下。 优势: 手机和电脑不需要下载对应平台的应用,完全使用全系统自带功能。 附加: 以下演示是安卓手机和windows操作系统电脑,并且win10和win10...

皇冠小丑
今天
22
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部