qt中如何配置gdal文件
‘壹’ vs2010中安装配置GDAL1.92,运行cmd,进入VC10安装目录下D:\VS2010\VC\bin中,执行VCVARS32.BAT文件
没有找到common tools的文件夹。
批处理中的代码是这样的:
@if "%VS100COMNTOOLS%"=="" goto error_no_VS100COMNTOOLSDIR
@REM -----------------------------------------------------------------------
:error_no_VS100COMNTOOLSDIR
@echo ERROR: Cannot determine the location of the VS Common Tools folder.
@goto end
一般出现这个问题的原因,要么是安装的时候没有安装任何一个VS工具软件,要么就是VS的安装配置有问题,环境变量不对。
‘贰’ 如何搭建python2.7和GDAL开发环境
下载并安装Python2.7,这一步省略,请自行下载安装;
下载并安装gdal-111-1600-x64-core.msi ;
方法二:
安装时,一路下一步,即可,点击Finish;
下载并安装GDAL-1.11.1.win-amd64-py2.7.msi ;
双击GDAL-1.11.1.win-amd64-py2.7.msi 进行安装:
选择install for all users:
选择Entire feature will be installed on local hard drive:
选择安装路径C:\Python27\ArcGIS10.2\Lib\site-packages,这个路径最好是Python能够搜索到的路径,也就是sys.path中的路径之一即可,这样在import的时候才不会报错;
安装完成后,我们发现在C:\Python27\ArcGIS10.2\Lib\site-packages路径下,多了一个Lib的文件夹,这一步不是很清楚为什么会是这样?因为一般情况下,Python包安装完后都可以直接用的,不过不用担心,只需要两步设置即可:
(一)在C:\Python27\ArcGIS10.2\Lib\site-packages新建gdal的文件夹,然后将C:\Python27\ArcGIS10.2\Lib\site-packages\Lib\site-packages下的所有文件复制到C:\Python27\ArcGIS10.2\Lib\site-packages\gdal下面;
(二)在C:\Python27\ArcGIS10.2\Lib\site-packages\gdal下面新建一个__init__.py的py文件,文件内容为空;
12
验证,在Python GUI中输入 import gdal 成功!
‘叁’ Qt回调函数
1、回调函数
一个回调可以认为是一个指向函数的指针。当满足某种条件时,消息处理函数将调用该回调函数进行事件的处理。类似于win32的消息循环机制,当某一事件产生,由系统转化成消息并进入消息循环队列时,应用程序将根据消息的类型来决定对某个回调函数的调用。类似于下面的伪代码:
//消息循环队列
while(getMessageFromSystem(&msg))//一直从系统获取消息(事件)
{
switch(msg.type())
{
case MOUSE_EVENT:
handleMouseEvent();
break;
case KEYBOARD_EVENT:
handleKeyBoardEvent();
break;
....
}
}
采用这种方式会存在一些缺陷:首先他们不是类型安全的,我们不能保证消息处理函数会采用正确的参数来调用回调函数;其次回调函数对消息处理函数有很强的依赖性,因为消息处理函数必须清楚如何对回调函数进行调用。
2、信号和槽
在qt中,采用了信号和槽作为回调函数的替代方式。当某个事件发生时,某个信号将被发送(emit)出去,而相应的槽将接受该信号进行消息处理。比如窗口中有一个QPushButton m_button,我要通过点击该按钮来实现窗口的关闭。由于按钮被点击之后将发出 clicked() 信号,而窗口的关闭由槽函数 close() 来实现。我们只需要关联信号 clicked() 和槽 close(),代码如下:
connect(&m_button,SIGNAL(clicked()),this,SLOT(close()));
这样我们在点击对象m_button时,将自动关闭该窗口。
由上面可见,信号和槽的连接是通过QObject::connect()函数来实现的。我们可以关联任意的信号和槽,可以将一个信号关联到多个槽,也可以将多个信号关联到一个槽,也可以把一个信号关联到另一个信号,总之有很高的灵活性。信号和槽是相对独立的,它们可以存在于各自的模块之中,要使它们之间建立消息传递的机制,只需要简单的调用connect()
信号和槽避免了上述回调所带来的缺陷,首先信号和槽都会进行严格的参数类型检查,这样也就保证了类型安全;其次,信号和槽是松耦合的,信号发送者不需要关心谁来接受这个信号,它只负责把信号发送出去。而qt的信号和槽机制又保证了在合适的时候调用信号所关联的槽函数(会存在一个信号队列对信号进行管理),同时槽函数也可以作为一个普通的成员函数进行调用。
当然这只是信号和槽的一些最基本的特性,关于qt的信号和槽实现机制可以查看qt assistant中的Meta-Object System,关于connect()函数的详细介绍可以查看QObject::connect()以及QObject::disconnect()函数的详细介绍。
其他相关的文档:qt assistant中的 Signals and Slots 一节
注意:要使用信号和槽机制,需要继承自QObject,并在类的private区域加上Q_OBJECT宏
个人观点,难免有不对之处,望指正
‘肆’ 头文件中怎么增加gdal.h
你没有导入lib库,所有造成函数有定义而连接不上,将你的lib库文件加入到工程文件中,或者在原代码中加入 #pragma comment(lib,"你的lib库路径和文件名"). 然后进行编译连接。
‘伍’ 如何在CSharp中使用GDAL
问题解决方案,可以不考虑测试结果 将四个*_CSharp.dll在项目中“添加引用”添加进来,其余gdal16.dll和另外四个编译C#时生成的dll文件拷贝到项目的debug下。即可。 如果不把dll文件拷贝到debug下,将出现下面错误: “OSGeo.OGR.Ogr”的类型初始值设定项引发异常这样的问题。 这个问题是dll不全造成的,除了要引用的4个dll外,还有5个dll也要放到Debug目录下。 在编译C#下的gdal时,总共生成了9个dll,在编译的本机上,程序是通过环境变量path找到另外的几个dll的。 在没有编译过gdal的电脑上,反正就把这9个编译后的dll放到debug下面就一切Ok了
‘陆’ 如何使用已编译好的gdal文件
真搞不明白了,你去这有下载 http://www.gissky.net/Article/643_2.htm 把文章好好看了,其中有编译好的下载 确认你的BIN目录下有VCVARS32.BAT文件么
‘柒’ 怎么指定gdal-1.11.4.win-amd64-py2.7.msi的安装目录
不能画界面。说它跟VC一样是因为可以它也是个集成开发环境。
如果你还不大会python,建议先学好python再来想界面的事情。
如果你已经很熟悉python了,可以考虑用pyqt开发图形界面。pyqt是对qt的python封装,你要学会用它最好先学会用qt。qt的文档大部分是英文的,中文也有但相对比较少,自己慢慢看吧。
虽然现在编程比10年前要容易很多,但还是有一定门槛,有兴趣就自己多花时间学学钻研下,没兴趣就改行干别的吧。做程序员性价比不高。
‘捌’ 如何编译GDAL的链接
一、注册vc的编译环境。
打开控制台,输入:
“D:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/bin/vcvars32.bat"
注册vc的编译环境。
如果不行
手工添加环境变量 (注意版本要一致哦)
path
include
lib
二、nmake.opt。
打开gdal文件夹下的nmake.opt修改GDAL_HOME = "C:/warmerda/bld"把路径改到需要把gdal安装的地方。
不改也可以。如果需要Python支持
修改PY_INST_DIR = $(GDAL_HOME)/pymod把路径改成python下的Lib/site-packages文件夹下。
PYDIR = "C:/Software/Python24" 改成python的安装路径。
下面的参数爱改什么就把前面的#删除(要看您有没有那些库的源码),注意一下路径就可以了。我是都没改。
三、编译安装
后面就依次运行
nmake /f makefile.vc #编译
nmake /f makefile.vc install #安装运行需要的东西
nmake /f makefile.vc devinstall #安装开发需要的东西
nmake /f makefile.vc clean #打扫战场
最后最后,还要去GDAL_HOME目录下的bin文件夹下把gdal13.dll(也有可能是gdal12.dll)
到PY_INST_DIR路径下到此处就完成安装gdal(python)的工作。
四、如果编译出现出错
如果是连接错误,肯定是lib环境变量没有设置对
如果是语法错误,则可能是include没有设置好,或者源码对vc编译器有些不好,需要手工改改源码。
(源自博客)
‘玖’ C++程序在使用GDAL时为什么必须包含头文件:gdal_priv.hgdal_priv.h包含的是什么文件
使用GDAL肯定要调用gdal定义的库函数,gdal_priv.h里面有GDAL相关库函数的声明,所以要使用GDAL里面的库函数,就要包含gdal_priv.h头文件
‘拾’ vs2010配置gdal时无法打开geo_c.h头文件
您好,您可以试试:1在VC中,打开菜Tool-Option,在Directories页面中的Library files中和Include files中分别添加GDAL的LIB文件目录和INCLUDE文件目录。
2打开菜单Project-Setting,在Link页面下的Object/library moles中添加字符串:gdal_i.lib。
3将gdal_priv.h; gdal.h 头文件加进工程,即可调用gdal中的函数.函数的使用方法请参考gdaldoc下面的GDAL API Tutorial说明。
4把gdal15.dll拷到工程文件所在目录或Debug文件目录。