0

我正在尝试使用 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 的默认构造函数甚至看起来都不是私有成员函数。有谁知道我将如何进行这个编译?

谢谢,里克

4

1 回答 1

2

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

于 2012-01-20T16:35:14.300 回答