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

1.二次开发环境搭建

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

 点击OSGeo4W Network Installer

Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)_第1张图片

点击下载 OSGeo4W Installer

 Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)_第2张图片

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

 Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)_第3张图片

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

 Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)_第4张图片

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

Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)_第5张图片

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

Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)_第6张图片

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

Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)_第7张图片  

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

Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)_第8张图片​  

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

Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)_第9张图片

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

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

Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)_第10张图片

2. VS2017开始配置

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

Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)_第11张图片

附加包含目录

点击"配置属性"->"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.源码

以下是运行结果。

 Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)_第12张图片

static QList 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

你可能感兴趣的:(Qgis,c++,qt,qgis,环境搭建)