QGIS:QgsVectorLayer和QgsRasterLayer的默认构造函数?

时间:2011-10-07 11:02:36

标签: c++ qgis

我正在尝试使用QGIS API和预定义的QGIS项目文件创建Windows窗体控件,以便我可以在Windows窗体控件上设置X和Y属性,QGIS API将显示预定义的地图数据在控制中,聚焦在提供的坐标上。

使用QgsProject :: instance() - > read()似乎会导致未处理的异常(访问冲突读取位置0x00000000),所以我试图逐行挑选实际代码。有一部分qgsproject.cpp用于处理从项目文件中提取图层,然后将它们添加到地图画布中,其中显示:

QgsMapLayer *mapLayer = null;
if(type=="vector")
    mapLayer = new QgsVectorLayer;
else if(type==""raster")
    mapLayer = new QgsRasterLayer;

其中type是元素'type'属性的值。

当我尝试在我的Visual Studio项目中编译它时,它抱怨任何类型的地图图层都没有默认构造函数。我可以使用的唯一构造函数需要路径和基本名称,并且似乎没有实际工作(因此尝试使用与gui相同的方法,因为项目文件确实在完整的应用程序gui中加载)。

QgsRasterLayer的默认构造函数似乎不是私有成员函数。有谁知道如何进行编译?

谢谢, 瑞克

1 个答案:

答案 0 :(得分:2)

猜测一下:你使用的是Visual Studio 2008吗? http://hub.qgis.org/wiki/quantum-gis/Building_QGIS_from_Source#Building-with-Microsoft-Visual-Studio表示QGIS二进制文件(我假设您正在使用它们)是使用Visual Studio 2008构建的 - 如果您使用不同的编译器版本,则可能会遇到运行时混合问题。