"这篇教程详细介绍了如何在C#环境下编译GDAL库,使其支持中文路径。通过遵循这些步骤,用户可以成功构建一个兼容中文路径的C#版本GDAL库。" 在C#环境中,使用GDAL(Geospatial Data Abstraction Library)库通常会遇到路径处理的问题,特别是当路径包含中文字符时。GDAL库原生可能不完全支持中文路径,但通过特定的编译方法,我们可以构建一个定制的C#版本GDAL库来解决这个问题。 首先,你需要下载GDAL源码并准备开发环境。确保你已经安装了Visual Studio 2010或更高版本,因为编译过程中将使用到这个IDE。同时,确保系统中也安装了C++编译器,因为GDAL库是用C++编写的。 1. 解压下载的GDAL源代码到本地目录。 2. 打开GDAL源代码目录下的`swig\csharp\AssemblyInfo.cs`文件,注释掉 `[assembly: SecurityRules(SecurityRuleSet.Level1)]` 行。这行代码与安全规则相关,但在处理中文路径时可能产生问题,因此需要暂时禁用。 3. 在`swig\csharp`子目录下,找到并修改以下文件:`Gdal.cs`,`Driver.cs`,`Ogr.cs` 和 `Driver.cs`。在这些文件中,寻找将字符串从系统默认编码转换为UTF-8的代码,通常使用 `System.Text.Encoding.Default.GetString(System.Text.Encoding.UTF8.GetBytes(utf8_path))`,并将其替换为直接使用UTF-8编码,避免编码转换导致的中文路径问题。 4. 打开Visual Studio,设置解决方案配置为GDAL项目,并指定正确的库目录。然后,运行nmake命令进行编译:`nmake -f makefile.vc`,接着执行安装步骤:`nmake -f makefile.vc install`,最后执行开发环境的安装:`nmake -f makefile.vc devinstall`。这些命令会编译GDAL库并将其安装到指定目录。 5. 完成以上步骤后,回到GDAL源代码目录,执行 `nmake -f makefile.vc` 来编译C#部分的库。 6. 关于GEOS(Geometry Engine Open Source)的支持,如果需要的话,需要在`nmake.opt`文件中配置GEOS的目录、头文件路径和库文件路径。这里提供了一个示例配置,根据实际的GEOS库位置进行调整。配置完成后,重新运行nmake命令,确保GDAL库被编译为包含GEOS支持的版本。 完成上述步骤后,你将在`bin\Debug`或`bin\Release`目录下找到编译好的C#.dll以及相关的C++动态链接库(如gdal18.dll)。这些编译后的库已具备处理中文路径的能力。确保在使用时将这些库文件添加到你的C#项目引用中,以便在代码中正常调用GDAL功能。 要让GDAL在C#环境中支持中文路径,关键在于正确地编译源码并处理编码转换问题。通过以上步骤,你可以自定义一个兼容中文路径的GDAL库,从而在处理地理数据时不受语言限制。
2.在gdal目录\swig\csharp\AssemblyInof.cs文件中,将//[assembly:SecurityRules(SecurityRuleSet.Level1)]行的注释取消,并保存。
3.修改\swig\csharp下的文件,将C#代码中的编码转换部分全部去掉,这部分代码主要集中在这几个文件中:
\swig\csharp\gdal\Gdal.cs
\swig\csharp\gdal\Driver.cs
\swig\csharp\ogr\Ogr.cs
\swig\csharp\ogr\Driver.cs
将这几个文件中的System.Text.Encoding.Default.GetString(System.Text.Encoding.UTF8.GetBytes(utf8_path))全部替换为utf8_path
4.进入vs2010命令行提示窗口,在窗口中切换到GDAL的源代码目录后,依次敲入下面的命令行后回车,等待编译结束即可。
nmake -f makefile.vc
nmake -f makefile.vc install
nmake -f makefile.vc devinstall
5.切换到gdal目录下的csharp文件夹,执行命令:
nmake makefile.vc
6.将八个C#.dll,和一个C++.dll拷贝到工程bin\debug或release文件夹下,即可。
注:1 编译Geos
首先使用记事本或者其他的文本编辑器打开GDAL源代码目录下的nmake.opt文件,找到“# Uncomment for GEOS support”这句,大概在405行左右,将下面三行代码:
#GEOS_DIR=C:/warmerda/geos
#GEOS_CFLAGS =-I$(GEOS_DIR)/capi -I$(GEOS_DIR)/source/headers -DHAVE_GEOS
#GEOS_LIB =$(GEOS_DIR)/source/geos_c_i.lib
修改为:
GEOS_DIR=F:\Work\3rdPart\geos-3.2.2
GEOS_CFLAGS =-I$(GEOS_DIR)/capi -I$(GEOS_DIR)/source/headers -DHAVE_GEOS
GEOS_LIB = $(GEOS_DIR)/source/geos_c_i.lib
其中F:\Work\3rdPart\geos-3.2.2是我本机的GEOS存放的主目录,后面两行设置的是GEOS的头文件目录和lib文件路径。设置好后保存即可。
保存完nmake.opt之后,按照第4步中的编译方式进行编译即可。编译后的GDAL就将会支持图形之间的操作等处理。函数主要是在OGR库中,后面会在OGR库中进行详细的介绍说明。
编译后,千万别忘记将geos_c.dll文件拷贝到gdal18.dll的同级目录下,否则会提示你找不到geos_c.dll文件。
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展