将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放在一个文件夹里就可以引用了。