Windows7下编译QGis源码

来源:互联网 发布:怎么筛选excel数据 编辑:程序博客网 时间:2024/06/01 08:05

关于编译QGis源码,网上有很多,步骤大都类似:

Qgis源码 + CMake + Flex、Bison + OsGeo4W + VS;

OsGeo4W 安装大部分编译需要的环境包:包括qt、grass、gdal、python...

CMake编译 + VS编译(可能部分项目编译通不过,不过qgis核心库编译必须通过)...

 

基本网上查找的很多到此及结束了,不过本人在编译完成后,启动qgis.exe却遇到了不少问题:

例如:启动程序,提示缺少sqlite3.dll,这个可以直接网上下载(也可以自己下载源码编译)

http://www.sqlite.org/download.html 开源的嵌入式关系数据库的库;

例如:启动程序就闪退,这个可以跟踪源码调试;

我之前就碰到过一个,在delete一个对象是挂掉(new和delete是成对出现),似乎是因为无法确定通过结果创建的对象是否是new出来,所以需要在外面判断是否非空,自己new一个对象并赋值,delete的对象则修改为手动new出来的

例如:启动程序出现部分未显示图标


解决方法:


qt的关于解析图标格式的库文件夹imageformats全部拷贝到qgis.exe目录下

参考http://blog.csdn.net/deirjie/article/details/50446033

例如:出现如下提示:废弃的Crash


无论是CMake编译通过,还是VS源码所有项目编译都通过,始终存在这个问题,折腾了好几天,最后终于找到问题所在

就是qt的版本以及VS编译的版本问题所造成的,就如标题列出的版本一样,这些都需要考虑的。

通过OSGeo4W下载的Qt库,使用Depends.exe可以看到

 

MSVCP100.DLL表示,这个库是使用VS2010编译,而通过调式定位到出现异常的地方,在free内存是使用的编译器2005的接口,结果就造成的这样的问题;

所以只好使用以前下载的qt库(MSVCP80.DLL)编译,这下就没什么问题了。各位编译的时候一定要注意各个版本之间是否会出现的这种问题...

 

大致查了目前的qt版本 >= 4.8.6 采用的都是VS2008、VS2010以及VS2015编译的库;

与目前的VS2005因版本差异导致,编译的qgis系统部分功能可能会造成系统崩溃;

QGis源码 < 2.10.0 + Qt库 < 4.8.0 + VS2005;

QGis源码 >= 2.10.0版本的需要 Qt >= 4.8.0 + VS >= 2008;


1 0