#c #qgis
#c #qgis
Вопрос:
Я пытаюсь создать элемент управления Windows Forms, используя QGIS API и предварительно определенный файл проекта QGIS, чтобы я мог установить свойства X и Y в элементе управления Windows Forms, и 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, он жалуется на отсутствие конструктора по умолчанию для любого типа слоя карты. Единственные доступные мне конструкторы требуют путей и базовых имен и, похоже, на самом деле не работают (следовательно, пытаются использовать те же методы, что и графический интерфейс, учитывая, что файл проекта загружается в полном графическом интерфейсе приложения).
Конструктор по умолчанию для QgsRasterLayer, похоже, даже не является частной функцией-членом. Кто-нибудь знает, как AI будет выполнять эту компиляцию?
Спасибо, Рик
Ответ №1:
Просто предположение: используете ли вы Visual Studio 2008? http://hub.qgis.org/wiki/quantum-gis/Building_QGIS_from_Source#Building-with-Microsoft-Visual-Studio указывает, что двоичные файлы QGIS (я предполагаю, что вы их используете) создаются с использованием Visual Studio 2008 — если вы используете другую версию компилятора, вы можете столкнуться с проблемами смешивания во время выполнения.