C++ QGIS:使用QApplication时出现错误LNK2019

C++ QGIS:使用QApplication时出现错误LNK2019,c++,qt,visual-studio-2015,qt5,qgis,C++,Qt,Visual Studio 2015,Qt5,Qgis,我正在尝试使用QGIS类“QApplication”创建一个项目,但由于一个我无法理解的错误,它似乎失败了 我使用的main.cpp仅包含以下行: #define CORE_EXPORT __declspec(dllexport) #include "QGisTest.h" #include <QtWidgets/QApplication> #include <qgsapplication.h> int main(int argc, char *ar

我正在尝试使用QGIS类“QApplication”创建一个项目,但由于一个我无法理解的错误,它似乎失败了

我使用的main.cpp仅包含以下行:

#define CORE_EXPORT __declspec(dllexport)    

#include "QGisTest.h"
#include <QtWidgets/QApplication>    

#include <qgsapplication.h>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QGisTest w;
    w.show();
    return a.exec();
}
为了避免其他编译问题,并将QGIS和Qt5.7libs链接到项目

知道怎么修吗

编辑:

我已经按照建议更改了main.cpp的两行,现在包含以下代码:

#define CORE_EXPORT __declspec(dllimport)


#include "QGisTest.h"
#include <QApplication>


#include <qgsapplication.h>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QGisTest w;
    w.show();
    return a.exec();
}
#定义核心导出(dllimport)
#包括“QGisTest.h”
#包括
#包括
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
qgisw;
w、 show();
返回a.exec();
}
但当我尝试构建它时,仍然会出现以下错误:

1>------ Build started: Project: QGisTest, Configuration: Release x64 ------
1>  moc_qgsapplication.cpp
1>  main.cpp
1>  Generating Code...
1>     Creating library C:\Users\GRODRIGUEZ\Documents\Visual Studio 2015\Projects\QGisTest\x64\Release\QGisTest.lib and object C:\Users\GRODRIGUEZ\Documents\Visual Studio 2015\Projects\QGisTest\x64\Release\QGisTest.exp
1>moc_qgsapplication.obj : error LNK2019: unresolved external symbol "private: static class QMap<class QString,class QString> QgsApplication::mSystemEnvVars21800" (?mSystemEnvVars21800@QgsApplication@@0V?$QMap@VQString@@V1@@@A) referenced in function "public: static class QMap<class QString,class QString> __cdecl QgsApplication::systemEnvVars(void)" (?systemEnvVars@QgsApplication@@SA?AV?$QMap@VQString@@V1@@@XZ)
1>moc_qgsapplication.obj : error LNK2019: unresolved external symbol "private: static bool QgsApplication::mRunningFromBuildDir21800" (?mRunningFromBuildDir21800@QgsApplication@@0_NA) referenced in function "public: static bool __cdecl QgsApplication::isRunningFromBuildDir(void)" (?isRunningFromBuildDir@QgsApplication@@SA_NXZ)
1>moc_qgsapplication.obj : error LNK2019: unresolved external symbol "private: static class QString QgsApplication::mBuildSourcePath21800" (?mBuildSourcePath21800@QgsApplication@@0VQString@@A) referenced in function "public: static class QString __cdecl QgsApplication::buildSourcePath(void)" (?buildSourcePath@QgsApplication@@SA?AVQString@@XZ)
1>moc_qgsapplication.obj : error LNK2019: unresolved external symbol "private: static class QString QgsApplication::mCfgIntDir21800" (?mCfgIntDir21800@QgsApplication@@0VQString@@A) referenced in function "public: static class QString __cdecl QgsApplication::cfgIntDir(void)" (?cfgIntDir@QgsApplication@@SA?AVQString@@XZ)
1>moc_qgsapplication.obj : error LNK2019: unresolved external symbol "private: static class QString QgsApplication::mBuildOutputPath21800" (?mBuildOutputPath21800@QgsApplication@@0VQString@@A) referenced in function "public: static class QString __cdecl QgsApplication::buildOutputPath(void)" (?buildOutputPath@QgsApplication@@SA?AVQString@@XZ)
1>moc_qgsapplication.obj : error LNK2019: unresolved external symbol "private: static class QStringList QgsApplication::mGdalSkipList21800" (?mGdalSkipList21800@QgsApplication@@0VQStringList@@A) referenced in function "public: static class QStringList __cdecl QgsApplication::skippedGdalDrivers(void)" (?skippedGdalDrivers@QgsApplication@@SA?AVQStringList@@XZ)
1>moc_qgsapplication.obj : error LNK2019: unresolved external symbol "private: static int QgsApplication::mMaxThreads21800" (?mMaxThreads21800@QgsApplication@@0HA) referenced in function "public: static int __cdecl QgsApplication::maxThreads(void)" (?maxThreads@QgsApplication@@SAHXZ)
1>C:\Users\GRODRIGUEZ\Documents\Visual Studio 2015\Projects\QGisTest\x64\Release\\QGisTest.exe : fatal error LNK1120: 7 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
1>----构建已启动:项目:QGisTest,配置:版本x64------
1> moc_qgsapplication.cpp
1> main.cpp
1> 正在生成代码。。。
1> 创建库C:\Users\GRODRIGUEZ\Documents\Visual Studio 2015\Projects\QGisTest\x64\Release\QGisTest.lib和对象C:\Users\GRODRIGUEZ\Documents\Visual Studio 2015\Projects\QGisTest\x64\Release\QGisTest.exp
1> moc_qgsapplication.obj:错误LNK2019:未解析的外部符号“private:静态类QMap qgsapplication::MSystementVvars21800”(?mSystemEnvVars21800@QgsApplication@@0V$QMap@VQString@@V1@@@A)在函数“public:static class QMap\uu cdecl QgsApplication::systemEnvVars(void)”中引用(?systemEnvVars@QgsApplication@@SA?AV$QMap@VQString@@V1@@@XZ)
1> moc_qgsapplication.obj:错误LNK2019:未解析的外部符号“private:static bool qgsapplication::mrunning fromBuildDir21800”(?mRunningFromBuildDir21800@QgsApplication@@函数“public:static bool\uu cdecl QgsApplication::isRunningFromBuildDir(void)”中引用了0_NA)(?isRunningFromBuildDir@QgsApplication@@萨苏(NXZ)
1> moc_qgsapplication.obj:错误LNK2019:未解析的外部符号“private:静态类QString qgsapplication::mBuildSourcePath21800”(?mBuildSourcePath21800@QgsApplication@@0VQString@@A)在函数“public:static class QString\uu cdecl QgsApplication::buildSourcePath(void)”中引用(?buildSourcePath@QgsApplication@@SA?AVQString@@XZ)
1> moc_qgsapplication.obj:错误LNK2019:未解析的外部符号“private:静态类QString qgsapplication::mCfgIntDir21800”(?mCfgIntDir21800@QgsApplication@@0VQString@@A)在函数“public:static class QString\uuu cdecl QgsApplication::cfgIntDir(void)”中引用(?cfgIntDir@QgsApplication@@SA?AVQString@@XZ)
1> moc_qgsapplication.obj:错误LNK2019:未解析的外部符号“private:静态类QString qgsapplication::mbuildOutPath21800”(?mBuildOutputPath21800@QgsApplication@@0VQString@@A)在函数“public:static class QString\uu cdecl QgsApplication::buildOutputPath(void)”中引用(?buildOutputPath@QgsApplication@@SA?AVQString@@XZ)
1> moc_qgsapplication.obj:错误LNK2019:未解析的外部符号“private:静态类QStringList qgsapplication::mGdalSkipList21800”(?mGdalSkipList21800@QgsApplication@@0VQStringList@@A)在函数“public:static class QStringList\uu cdecl QgsApplication::SkippeddalDrivers(void)”中引用(?skippedGdalDrivers@QgsApplication@@SA?AVQStringList@@XZ)
1> moc_qgsapplication.obj:错误LNK2019:未解析的外部符号“private:static int qgsapplication::mMaxThreads21800”(?mMaxThreads21800@QgsApplication@@0HA)在函数“public:static int_uucdecl QgsApplication::maxThreads(void)”中引用(?maxThreads@QgsApplication@@SAHXZ)
1> C:\Users\GRODRIGUEZ\Documents\Visual Studio 2015\Projects\QGisTest\x64\Release\\QGisTest.exe:致命错误LNK1120:7个未解析的外部
======生成:0成功,1失败,0最新,0跳过==========

\define CORE\u EXPORT\uuu declspec(dllexport)不是正确的做法。您的应用程序不是dll,您可能没有实现dll。您可能想要
\define CORE\u EXPORT\uu declspec(dllimport)
取而代之。永远不要
#include
。取而代之的是
#include
。如果编译器找不到头文件,则说明您的项目配置错误-请删除生成文件夹,然后重试。是否有定义
核心导出的头文件
?您在这里是为main()定义的,而不是为qgsapplication定义的。#定义核心导出#declspec(dllexport)不是正确的做法。您的应用程序不是dll,您可能没有实现dll。可能您想要
#define CORE_EXPORT_uudeclspec(dllimport)
取而代之。永远不要
#include
。取而代之的是
#include
。如果编译器找不到头文件,则说明您的项目配置错误-请删除生成文件夹,然后重试。是否存在定义
核心导出的头文件
?您在此处是为main()定义的,而不是为qgsapplication定义的。
#define CORE_EXPORT __declspec(dllimport)


#include "QGisTest.h"
#include <QApplication>


#include <qgsapplication.h>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QGisTest w;
    w.show();
    return a.exec();
}
1>------ Build started: Project: QGisTest, Configuration: Release x64 ------
1>  moc_qgsapplication.cpp
1>  main.cpp
1>  Generating Code...
1>     Creating library C:\Users\GRODRIGUEZ\Documents\Visual Studio 2015\Projects\QGisTest\x64\Release\QGisTest.lib and object C:\Users\GRODRIGUEZ\Documents\Visual Studio 2015\Projects\QGisTest\x64\Release\QGisTest.exp
1>moc_qgsapplication.obj : error LNK2019: unresolved external symbol "private: static class QMap<class QString,class QString> QgsApplication::mSystemEnvVars21800" (?mSystemEnvVars21800@QgsApplication@@0V?$QMap@VQString@@V1@@@A) referenced in function "public: static class QMap<class QString,class QString> __cdecl QgsApplication::systemEnvVars(void)" (?systemEnvVars@QgsApplication@@SA?AV?$QMap@VQString@@V1@@@XZ)
1>moc_qgsapplication.obj : error LNK2019: unresolved external symbol "private: static bool QgsApplication::mRunningFromBuildDir21800" (?mRunningFromBuildDir21800@QgsApplication@@0_NA) referenced in function "public: static bool __cdecl QgsApplication::isRunningFromBuildDir(void)" (?isRunningFromBuildDir@QgsApplication@@SA_NXZ)
1>moc_qgsapplication.obj : error LNK2019: unresolved external symbol "private: static class QString QgsApplication::mBuildSourcePath21800" (?mBuildSourcePath21800@QgsApplication@@0VQString@@A) referenced in function "public: static class QString __cdecl QgsApplication::buildSourcePath(void)" (?buildSourcePath@QgsApplication@@SA?AVQString@@XZ)
1>moc_qgsapplication.obj : error LNK2019: unresolved external symbol "private: static class QString QgsApplication::mCfgIntDir21800" (?mCfgIntDir21800@QgsApplication@@0VQString@@A) referenced in function "public: static class QString __cdecl QgsApplication::cfgIntDir(void)" (?cfgIntDir@QgsApplication@@SA?AVQString@@XZ)
1>moc_qgsapplication.obj : error LNK2019: unresolved external symbol "private: static class QString QgsApplication::mBuildOutputPath21800" (?mBuildOutputPath21800@QgsApplication@@0VQString@@A) referenced in function "public: static class QString __cdecl QgsApplication::buildOutputPath(void)" (?buildOutputPath@QgsApplication@@SA?AVQString@@XZ)
1>moc_qgsapplication.obj : error LNK2019: unresolved external symbol "private: static class QStringList QgsApplication::mGdalSkipList21800" (?mGdalSkipList21800@QgsApplication@@0VQStringList@@A) referenced in function "public: static class QStringList __cdecl QgsApplication::skippedGdalDrivers(void)" (?skippedGdalDrivers@QgsApplication@@SA?AVQStringList@@XZ)
1>moc_qgsapplication.obj : error LNK2019: unresolved external symbol "private: static int QgsApplication::mMaxThreads21800" (?mMaxThreads21800@QgsApplication@@0HA) referenced in function "public: static int __cdecl QgsApplication::maxThreads(void)" (?maxThreads@QgsApplication@@SAHXZ)
1>C:\Users\GRODRIGUEZ\Documents\Visual Studio 2015\Projects\QGisTest\x64\Release\\QGisTest.exe : fatal error LNK1120: 7 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========