Я следовал инструкциям здесь:
https://gis.stackexchange.com/questions/37111/how-to-install-qgis-on-centos-6
Если я бегу:
QgsVectorLayer * vpoly = new QgsVectorLayer("Polygon", "pointbuffer", "memory");
QgsVectorDataProvider * provider = vpoly->dataProvider();
Тогда провайдер является указателем NULL
Кроме того, если я сделаю:
QString myPluginsDir = "/usr/lib64/qgis";
QgsProviderRegistry * preg = QgsProviderRegistry::instance(myPluginsDir);
QString pluglist=preg->pluginList();
printf("plugins: %s\n",pluglist.toStdString().c_str());
Затем он печатает:
plugins: No data provider plugins are available. No vector layers can be loaded
Кроме того, когда я пытаюсь загрузить QgsVectorLayer со следующим:
QgsVectorLayer * mypLayer = new QgsVectorLayer(myLayerPath, myLayerBaseName, myProviderName);
if (mypLayer->isValid()){
qDebug("Layer is valid");
} else {
qDebug("Layer is NOT valid");
return;
}
Тогда это говорит, что слой НЕ действителен.
Все это прекрасно работает в Ubuntu, но я не могу заставить его работать в сентосах. Я думаю, что, возможно, не хватает всех плагинов. Что мне не хватает?
Пожалуйста помоги.
Я понял проблему.
Это не было связано с кодом, который я разместил. К счастью, это будет полезно для других, которые получают подобную ошибку.
Мой код был основан на QGIS_-Code-examples (2_basic_main_window)
Я не изменил переменную myPluginsDir. Будьте уверены, что вы измените его, потому что по умолчанию это будет неправильно.
Других решений пока нет …