vs2010-VS2010+GDAL网络连接配置出现问题 出现下面问题怎么解决

Windows、VS下(以Visual&Studio&2010为例)配置GDAL+GEOS库
○、前言
GDAL是GIS编程常用的库,而单独编译的GDAL/OGR不能进行完整的空间分析(比如多边形判断是否相交时,只使用外接矩形判断,而不是真正判断多变形是否相交。)使用GDAL+GEOS库则可以拥有GDAL的基本功能和空间分析功能。
网上看了些配置GDAL+GEOS库的方法,这里记下来,以后需要了自己翻出来。
非常感谢bigbigtree的博客,配置方法都是从这里学的。
感谢enjoylives的博客,我从中获益很多。
配置GDAL+GEOS库有两种方法:
1.直接使用编译好的库
2.自己编译库
“1.直接使用编译好的库”可能是 更好更方便
的办法。不用自己编译,节省时间,还能集成与GDAL相关的其他库。但我没试过。
具体情况和方法参见:
“2.自己编译库”是我现在使用的方法。
一、配置GEOS
要正确配置GDAL+GEOS,应首先编译GEOS库:
我用的是3.3.3版本,官网地址是:,在网站上有明显的下载地址。
(截止,最新版本是3.3.5)
32位版本配置方法:
打开“Visual Studio 命令提示”(我的是Visual Studio 2010,在开始菜单——Microsoft Visual Studio 2010——Visual Studio
Tools中可以找到“Visual
Studio 命令提示(2010)”)。
将目录切换到你的VS安装目录下的VC\bin目录,如C:\Program Files
(x86)\Microsoft Visual Studio
10.0\VC\bin。执行(这步的作用大致是配置VS的环境变量(其实我也不完全理解这步的作用),不配置可能导致后面的编译出错。很多时候这步不是必须的,在我的电脑上不执行这步对后面的编译没有影响。)
vcvars32.bat
然后将其目录切换到GEOS库的存放目录。(编译后生成的文件也都在该目录内,也就是说GEOS库的安装目录就是未编译前的这个存放目录。)
(设置路径时文件夹尽量不要使用不带空格和中文。否则可能出错。)
按顺序执行两个命令
atuogen.bat
nmake /f makefile.vc
(可以确定,3.3.0到3.3.3版本后面是是src_dir,更早的的版本有些是source_dir。&geos版本不同,该路径可能不同)
(点击图片可放大)
64位版本配置方法:
与32位类似,只是使用不同的命令提示工具。以Visual Studio 2010为例,将“Visual Studio 命令提示(2010)”换为“Visual
Studio x64 兼容工具命令提示(2010)”即可,在开始菜单——Microsoft Visual Studio
2010——Visual Studio
Tools中可以找到“ Visual Studio
x64&兼容工具命令提示(2010)&”。
二、配置GDAL
接下来配置GDAL库:
我用的是1.90版本,官网地址是:,可以从
http://trac.osgeo.org/gdal/wiki/DownloadSource
&http://download.osgeo.org/gdal/
(截止, 最新版本是1.9.2)
要按自己的需求配置GDAL,在编译前需更改GDAL目录下nmake.opt的一些内容。
1.自定义GDAL的安装位置
在nmake.opt中搜索“!IFNDEF
GDAL_HOME”,找到如下内容:
!IFNDEF GDAL_HOME
GDAL_HOME =
"C:\warmerda\bld"
默认的情况下,GDAL将会安装到"C:\warmerda\bld"文件夹内。把GDAL_HOME =
"C:\warmerda\bld"修改成如下内容:
GDAL_HOME =
"C:\gdal-runtime"
GDAL就会安装到C:\gdal-runtime路径。
C:\gdal-runtime可以改成任何你想安装的路径。
2.添加对GEOS的支持
打开nmake.opt文件,找到“#
Uncomment for GEOS support”这句,将下面三行代码:
#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=D:\ALibrary\geos333_32
GEOS_CFLAGS = -I$(GEOS_DIR)/capi -I$(GEOS_DIR)/include
-DHAVE_GEOS
GEOS_LIB & & =
$(GEOS_DIR)/src/geos_c_i.lib
(点击图片可放大)
其中D:\ALibrary\geos333_32是我的GEOS存放的主目录,后面两行设置的是GEOS的头文件目录和lib文件路径。
(GEOS_CFLAGS =
-I$(GEOS_DIR)/capi -I$(GEOS_DIR)/include -DHAVE_GEOS
GEOS_LIB &
& = $(GEOS_DIR)/src/geos_c_i.lib
是geos3.3.0——3.3.3版本的地址,如果你是用的是3.3.0以前的版本,这两句应该改为
GEOS_CFLAGS
=-I$(GEOS_DIR)/capi -I$(GEOS_DIR)/source/headers
-DHAVE_GEOS
=$(GEOS_DIR)/source/geos_c_i.lib
也就是,相对最初的句子,只去掉句子前的#即可。)
(另外,gdal的编译对文件夹名称的支持似乎不太好,文件夹名称有空格时会编译失败,大家在设置路径时文件夹尽量用不带空格的英文。)
在完成了对nmake.opt的修改之后,就可以开始对GDAL库进行编译了。
32位版本配置方法:
打开“Visual Studio&命令提示”(我的是Visual Studio
2010,在开始菜单——Microsoft
Visual Studio 2010——Visual Studio Tools中可以找到“Visual
Studio&命令提示(2010)”)。
将目录切换到你的VS安装目录下的VC\bin目录,如C:\Program
Files (x86)\Microsoft Visual Studio
10.0\VC\bin。执行(这步的作用大致是配置VS的环境变量(其实我也不完全理解这步的作用),不配置可能导致后面的编译出错。很多时候这步不是必须的,在我的电脑上不执行这步对后面的编译没有影响。)
vcvars32.bat
然后将其目录切换到GDAL库的存放目录。
依次执行下面的命令,第一步时间运行较长。
-f makefile.vc
-f makefile.vc install
-f makefile.vc devinstall
三条命令的含义分别是:
编译GDAL库
编译GDAL库,并安装(这里安装的意思就是将生成的dll,exe等文件拷贝到C:\gdal-runtime目录),
编译GDAL库,并安装开发者模式(安装的意思同上,开发者模式意思是将开发用的include文件夹中的头文件和lib文件一同拷贝到C:\gdal-runtime目录,此时会在C:\gdal-runtime目录中多出来两个文件夹,分别是include和lib,分别存放的是GDAL的头文件和lib文件,用于调用GDAL库使用)。
也就是说,后两个命令是把GDAL库安装(拷贝)到前面定义的安装目录。
编译完成后编译,将geos_c.dll(在geos的安装目录(包括安装目录下的各个文件夹),中找找肯定能找到)文件拷贝到gdal19.dll(根据GDAL版本不同,名字会略有不同,如GDAL1.80为gdal18.dll)的同级目录下(也就是C:\gdal-runtime\bin下)。
对于使用cmd命令行编译,基本同本文开始,不一样的只有,在开始菜单选择的不是“Visual Studio 2008 命令提示”而是“Visual Studio 2008 x64 兼容工具命令提示”,剩下的编译步骤跟前面的一样。
64位版本配置方法:
与32不同有两点:
1.使用不同的命令提示工具。以Visual Studio 2010为例,将“Visual Studio 命令提示(2010)”换为“Visual
Studio x64 兼容工具命令提示(2010)”,在开始菜单——Microsoft Visual Studio
2010——Visual Studio
Tools中可以找到“&Visual Studio
x64&兼容工具命令提示(2010)&”。
2.在编译开始之前,需要打开nmake.opt文件,找到“#WIN64=YES”,将前面的“#”去掉。
我按照上述过程成功编译了32位和64位版本的geos3.3.3和GDAL1.90。在我参考的、
中还提到了安装可能遇到的其他问题,如果安装中出现我没有提到的情况(特别是使用的GEOS或GDAL是早一些的版本时),可以参考上述博文。
如何想要编译debug版本或了解更多的编译设置,也可以参考上述博文。
三、使用GDAL
要在Visual
Studio中使用GDAL库,必须在程序中引入GDAL的头文件(.h),静态库文件(.lib),动态链接库(.dll)。
3.1 头文件的引入方法:(以Visual Studio
2010为例)
& 进入 菜单栏——项目——项目属性
& 之后在 &配置属性——VC++目录
包含目录,加入GDAL安装目录下的include文件路径,如&D:\ALibrary\gdal_runtime\include
这样就把GDAL的头文件目录引入了VS项目,之后再程序代码中就可以#include
&gdal的某个头文件名&来使用某个GDAL头文件。(因为已经把GDAL的头文件目录引入了VS项目,这样才能#include成功,如果不加入,项目是找不到文件名对应的头文件的。)
一般的gdal处理栅格数据都至少要&
#include "gdal_priv.h"
处理矢量数据则需要
#include "ogrsf_frmts.h"
根据程序功能的不同,可能还需要#include其他头文件,就需要自己学习了。
库文件的引入方法:(以Visual
Studio 2010为例)(与头文件十分类似)&
& 进入 菜单栏——项目——项目属性
& 之后在 &配置属性——VC++目录
库目录,加入GDAL安装目录下的lib文件路径,如&D:\ALibrary\gdal_runtime\lib
这样就把GDAL的库文件目录引入了VS项目,之后再程序代码中就可以
comment(lib,"库文件名"),来使用库文件。(因为已经把GDAL的库文件目录引入了VS项目,这样才能
comment&成功,如果不加入,项目是找不到文件名对应的库文件的。)
因为GDAL只有一个库文件,gdal_i.lib,所以#pragma
comment(lib,"库文件名")这句话其实是固定的,都写成#pragma comment(lib," gdal_i.lib&")即可。
(引入库文件的另一种方法:在完成了第一步:库目录中加入GDAL安装目录下的lib文件路径之后,可以不使用#pragma
comment的方式,而是用另一种方法加入gdal_i.lib:菜单栏——项目——项目属性,配置属性——链接器——输入——附加依赖项,加入gdal_i.lib)
下面用两张截图表示在VC++目录中加入头文件目录和库文件目录的方法,以及在附加依赖项中加入gdal_i.lib的方法:(点击图片可放大)
动态链接库的引入方法:(以Visual Studio
2010为例)
在前面我们了解到,头文件(.h),静态库文件(.lib)的引入分两步:1.向VS加入头文件(.h),静态库文件(.lib)所在文件夹,这样VS在寻找头文件(.h),静态库文件(.lib)时会搜索这些文件夹。&2.在程序中中通过#include,#pragma
comment(或链接器)引入头文件(.h),静态库文件(.lib)。
加入动态链接库(.dll)的方法与它们略有不同。一般只需要向VS加入动态链接库所在文件夹即可,程序编译时会自动在这些文件夹中寻找动态链接库,而不用在程序中在主动引入动态链接库。
这里推荐一种方法:在系统的环境变量——PATH中添加GDAL安装目录下的bin文件夹,如&D:\ALibrary\gdal_runtime\bin。(注意,程序运行需要gdal19.dll(以GDAL1.9.0版本为例)和geos_c.dll两个dll文件,因此必须保证你的GDAL安装目录下的bin文件夹有这两个文件。在GDAL安装正确完成后,其bin目录下是一定有gdal19.dll的,而geos_c.dll本来是在GEOS安装目录下的src文件夹内的(以GEOS3.3.3.
为例),如D:\ALibrary\geos333_32\src,所以必须把geos_c.dll拷贝过去才行。这一步在前面的步骤已经做了,但是如果忘了做,看到这里就把这一步补上吧。)
以WIN7为例,介绍系统的环境变量——PATH中添加GDAL安装目录下的bin文件夹的具体步骤:
在桌面的 &计算机(我的电脑)
图标上右击——属性,打开后在左侧选择 &
&高级系统设置,打开后
高级选项卡——环境变量,在系统变量里找到PATH,加入D:\ALibrary\gdal_runtime\bin。(GDAL安装目录下的bin文件夹&)
OK!到这里就大功告成了!GDAL+GEOS库已经可以在你的电脑上正确使用了!
(最后补充一下动态链接库的引入方法的另一种方法:
在中提到了
Windows搜索DLL文件的基本规则:
& & 1)执行文件所在的文件夹。
2)windows系统安装文件夹,即安装了windows的文件夹,GetWindowsDirectory(
)函数可提供该目录的路径名。
3)Windows系统目录,即System32子目录;调用GetSystemDiretory(
)函数可获得这个目录的路径名。
4)在系统变量Path中配置的文件夹,或用dos的path命令指定的文件夹。
& & 5)网络中映象的目录列表中的全部目录。
所以上述加入dll文件的方法其实是走的
&4)路径,其实我们走1)路径也很方便,把gdal19.dll和geos_c.dll拷贝到你的VS程序执行目录就行了!(
&2)、3)方法也可以尝试,但不推荐。 &)
事实上由于我们的程序运行时一直需要加载动态链接库,那么如果把程序拷贝到另一台电脑,而这台电脑没有安装GDAL或者没有在path中设置GDAL的dll路径,那么我们的程序就不能在这台电脑上运行。这时如果我们加载dll走的是1)路径,那么VS程序执行目录就有gdal19.dll和geos_c.dll,我们只需要把它们和程序一起拷贝就可以保证程序正确运行了。这是使用1)路径的一种好处。
那么为什么要使用4)路径呢?这是因为在这次的配置中我们只需用到gdal19.dll和geos_c.dll两个dll,而其实GDAL还可以和许多其他库配合使用(如PROJ4),在这种情况下,我们会有很多dll,这时候如果使用使用1)路径就显得很麻烦(比如编5个gdal程序,就要把很多dll拷贝5次),而4)就很方便。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
OSGEARTH安装
下载积分:30
内容提示:OSGEARTH安装
文档格式:PDF|
浏览次数:267|
上传日期: 17:13:43|
文档星级:
全文阅读已结束,如果下载本文需要使用
 30 积分
下载此文档
该用户还上传了这些文档
OSGEARTH安装
关注微信公众号GDAL源码下载:http://download.osgeo.org/gdal/gdal192.zip
1.编译GDAL
将GDAL源码解压到指定目录下,如:C:\gdal-1.9.2 以管理员身份运行cmd,进入VC10安装目录下,如:D:\program files (x86)\Microsoft Visual Studio 10.0\VC\bin,执行VCVARS32.BAT文件配置编译环境回到C:\gdal-1.9.2目录下,运行命令nmake /f makefile.vc,编译过程需要几分钟。 用文本编辑软件打开文件C:\gdal-1.9.2\nmake.opt,修改GDAL_HOME=”GDAL安装目录(如:D:\GDAL)“ cmd在C:\gdal-1.9.2下执行nmake /f makefile.vc install,然后执行nmake /f makefile.vc devinstall,需要的东西就安装到D:\GDAL下了,里面有bin,data,html,lib,include几个文件夹
2.VS中配置项目
右键project--&Properties--&VC++Directories--&Include Directories引入D:\GDAL下的includeLibrary Directories引入D:\GDAL下的lib--&确定 Linker--&Input--&Additional Dependencies引入gdal_i.lib
3. 在需要用到GDAL的地方添加以下3个引用
& & #include&gdal.h&
& & #include&ogrsf_frmts.h&
& & #include&gdal_priv.h&
4. 把从编译好的GDAL文件夹中找到bin目录,拷贝bin文件夹下所有dll到自己所建工程的debug文件夹下
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:295次
排名:千里之外
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 出现页面文件配置问题 的文章

 

随机推荐