QGIS: конструктор по умолчанию для QgsVectorLayer и QgsRasterLayer? - PullRequest
0 голосов
/ 07 октября 2011

Я пытаюсь создать элемент управления Windows Forms с использованием API QGIS и предварительно определенного файла проекта QGIS, чтобы я мог задать свойства X и Y для элемента управления Windows Forms, и API QGIS отобразит предварительно определенные данные карты в элементе управления, сфокусированный на заданных координатах.

Использование QgsProject :: instance () -> read (), по-видимому, вызывает необработанное исключение (место чтения нарушения доступа 0x00000000), поэтому я пытаюсь просмотреть реальный код построчно. Есть часть qgsproject.cpp, которая занимается извлечением слоев из файла проекта и последующим добавлением их на холст карты, на котором написано:

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

Где тип - это значение атрибута элемента type.

Когда я пытаюсь скомпилировать это в моем проекте Visual Studio, он жалуется на то, что по умолчанию не существует конструктора для любого типа слоя карты. Единственные доступные мне конструкторы требуют пути и базовые имена и, похоже, на самом деле не работают (следовательно, пытаются использовать те же методы, что и графический интерфейс, учитывая, что файл проекта загружается в полном интерфейсе приложения).

Конструктор по умолчанию для QgsRasterLayer даже не является закрытой функцией-членом. Кто-нибудь знает, как я собираюсь сделать этот компилятор?

Спасибо, Rik

1 Ответ

2 голосов
/ 20 января 2012

Просто предположение: вы используете Visual Studio 2008?http://hub.qgis.org/wiki/quantum-gis/Building_QGIS_from_Source#Building-with-Microsoft-Visual-Studio указывает, что двоичные файлы QGIS (я предполагаю, что вы их используете) создаются с использованием Visual Studio 2008 - если вы используете другую версию компилятора, вы можете столкнуться с проблемами смешивания во время выполнения.

...