将GDAL编译成C#可用的DLL

  • 格式:docx
  • 大小:14.49 KB
  • 文档页数:4

目的:将GDAL编译成C#可用的DLL
环境
GDAL-1.10.1
.net framework 4.0
vs 2010
swigwin-2.0.11
代码错误记录
1、函数名称错误
....\GDAL\gdal-1.10.1\swig\csharp\gdal文件夹中的Band.cs、Dataset.cs、Driver.cs三个文
件中BandUpcast、DatasetUpcast、DriverUpcast函数名称应分别改为Band_SWIGUpcast、Dataset_SWIGUpcast、Driver_SWIGUpcast。

2、重复定义
....\GDAL\gdal-1.10.1\swig\csharp\ogr文件夹中OgrPINVOK.cs、OsrPINVOK.cs中第188行
有名称为
static OgrPINVOKE() { }、static OsrPINVOKE() {}的函数,此函数重复定义,将重复定义的代码删除。

类似的将....\GDAL\gdal-1.10.1\swig\csharp\osr文件夹中OsrPINVOK.cs的代码也改过来。

3、安全透明代码的问题
猜测是.net framework 版本过高引起的
....\GDAL\gdal-1.10.1\swig\csharp\gdal中有很多cs文件,在需要使用到的cs文件中加入
using System.Security;
[SecuritySafeCritical]
要注意的是Dataset.cs第52行的Dispose()函数被override了,要在此函数上面,即51行也要写入
[SecuritySafeCritical]
然后就可以编译了XD
编译
用vs命令提示(2010)
进入....\GDAL\gdal-1.10.1\
分别执行
nmake /f makefile.vc
nmake /f makefie.vc install
nmake /f makefile.vc devinstall
进入....\GDAL\gdal-1.10.1\swig\csharp\
执行
nmake /f makefile.vc
nmake /f makefie.vc install
在C:\warmerda\bld\csharp中有8个dll。

在….\GDAL\gdal-1.10.1有Gdal110.dll
将这9个DLL放在一个文件夹里就可以引用了。