Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)

1.二次开发环境搭建

下载osgeo4w-setup.exeDownload QGIShttps://www.qgis.org/en/site/forusers/download.html

 点击OSGeo4W Network Installer

点击下载 OSGeo4W Installer

 

运行程序 osgeo4w-setup.exe,出现以下界面,点击下一页。

 

选中install from internet,点击下一页。 

 

设置保存的路径,我这里设置E:\OSGeo4W,点击下一页。

这里设置下载存放的路径, 我这里设置E:\Temp,点击下一页。

选择Use System Proxy Settings,进入下一步 

  

添加URL:http://gwmodel.whu.edu.cn/mirrors/osgeo4w

​  

输入qgis-ltr,点击状态变为Install状态,点下一页,然后一直点同意下一页开始下载,如下图所示。

下载完成之后,打开Vs2017开始配置 ,进行配置,以下是demo程序目录,和qgis三方库目录。

在thirdPart路径下创建qgis目录,将E:\OSGeo4W\apps\qgis-ltr-dev目录下的include目录和lib目录拷贝到下面的路径。

2. VS2017开始配置

在工具栏中找到"Qt VS Tools",点击并找到"Options"->"Versions"进行Qt配置,配置文件夹以自己安装位置为准。

附加包含目录

点击"配置属性"->"C/C++"->"常规"-->"附加包含目录"

..\thirdPart\qgis\include

附加库目录

点击"配置属性"->"链接器"->"常规"-->"附加库目录"

..\thirdPart\qgis\lib

附加依赖项

点击"配置属性"->"链接器"->"输入"-->"附加依赖项"

qgis_core.lib
qgis_app.lib
qgis_gui.lib

预处理器定义

点击"配置属性"->“C/C++”->“预处理器”,在预处理器定义中加入"_USE_MATH_DEFINES"

配好以上环境后,基本上编译没有问题了,能够生成可执行程序了。

3.程序运行

拷贝E:\OSGeo4W\apps\qgis-ltr-dev\bin的所有 DLL文件到可执行程序目录下。

拷贝E:\OSGeo4W\apps\gdal-dev\bin的 DLL文件到可执行程序目录下。

拷贝E:\OSGeo4W\apps\proj-dev\bin的 DLL文件到可执行程序目录下。

拷贝E:\OSGeo4W\bin的 DLL文件到可执行程序目录下。

拷贝E:\OSGeo4W\apps\Qt5\bin DLL文件到可执行程序目录下。

拷贝E:\OSGeo4W\apps\Qt5\plugins\platforms目录到可执行程序目录下。

4.源码

以下是运行结果。

 

 

static QList<QgsMapLayer *> layers;
static QgsMapCanvas *m_mapCanvas = nullptr;

GisCtrl::GisCtrl(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
	
    
    QString fileName = "F:/GisCtrl/x64/out/map/counties_china.shp";
	QgsVectorLayer* vecLayer = new QgsVectorLayer(fileName);

	if (!vecLayer->isValid())
	{
		QMessageBox::critical(this, "error", QString("layer is invalid: \n") + fileName);
		return;
	}

	m_mapCanvas = new QgsMapCanvas();

	m_mapCanvas->setExtent(vecLayer->extent());
	layers.append(vecLayer);
	m_mapCanvas->setLayers(layers);
	m_mapCanvas->refresh();

    setCentralWidget(m_mapCanvas);
}


int main(int argc, char *argv[])
{
	//QString PROJ_LIB_PATH = BussinessLogic::getInstance()->getProjPath();
	//qputenv("PROJ_LIB", PROJ_LIB_PATH.toLatin1());//Qt临时环境变量必

	QgsApplication app(argc, argv, true);
	QgsApplication::initQgis();

	GisCtrl w;
    w.showMaximized();
    return app.exec();
}

 5.shp素材文件

https://download.csdn.net/download/wzz953200463/88064897https://download.csdn.net/download/wzz953200463/88064897

6.接口文档

https://api.qgis.org/api/3.16/

文章来源地址https://uudwc.com/A/wNwgw

原文地址:https://blog.csdn.net/wzz953200463/article/details/131816730

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年07月22日 19:30
JS 递归循环
下一篇 2023年07月22日 19:36