具有静态构建的 QML 插件

Jab*_*abu 8 c++ qt qml

我已经编译了 Qt\xc2\xa0static,但是当我运行我的应用程序时,出现此错误:

\n
qrc:/files/particles/particles.qml:2:1: module "QtQuick.Particles" plugin "particlesplugin" not found\xc2\xa0\n\xc2\xa0 \xc2\xa0 \xc2\xa0import QtQuick.Particles 2.0\xc2\xa0\n\xc2\xa0 \xc2\xa0 \xc2\xa0^\n
Run Code Online (Sandbox Code Playgroud)\n

我与 QML 相关的导入如下:

\n
import QtQuick 2.5\nimport QtQuick.Particles 2.0\n
Run Code Online (Sandbox Code Playgroud)\n

我尝试遵循文档:

\n
qrc:/files/particles/particles.qml:2:1: module "QtQuick.Particles" plugin "particlesplugin" not found\xc2\xa0\n\xc2\xa0 \xc2\xa0 \xc2\xa0import QtQuick.Particles 2.0\xc2\xa0\n\xc2\xa0 \xc2\xa0 \xc2\xa0^\n
Run Code Online (Sandbox Code Playgroud)\n

但我收到此编译错误:

\n
import QtQuick 2.5\nimport QtQuick.Particles 2.0\n
Run Code Online (Sandbox Code Playgroud)\n

我在源代码中搜索了导入此插件的正确方法,并在C:\\Qt\\6.6.0_static\\qtdeclarative\\src\\articles 中找到了它

\n

在文件keywordsplugin_init.cpp中中:

\n
#include <QtPlugin>\n\nint main(int argc, char *argv[])\n{\n\xc2\xa0 \xc2\xa0 QApplication a(argc, argv); \xc2\xa0\xc2\xa0 \xc2\xa0\n    Q_IMPORT_PLUGIN(QtQuick2Plugin)\n \xc2\xa0 \xc2\xa0Q_IMPORT_PLUGIN(QtQuick2ParticlesPlugin) // <--- cause error\n  \xc2\xa0 Q_IMPORT_PLUGIN(QtQmlMetaPlugin)\n\xc2\xa0 \xc2\xa0 Q_IMPORT_PLUGIN(QtQmlPlugin)\n\xc2\xa0 \xc2\xa0 Q_IMPORT_PLUGIN(QtQmlModelsPlugin)\n\xc2\xa0 \xc2\xa0 Q_IMPORT_PLUGIN(QtQmlWorkerScriptPlugin)\n
Run Code Online (Sandbox Code Playgroud)\n

为什么编译会抛出该错误?

\n

我正在使用Visual Studio 2022进行编译。

\n

我测试了添加#pragma comment(lib, "particlesplugin.lib")int main...上面的代码中

\n

并且编译器抱怨找不到该库。

\n

我将它们添加到我的项目属性中:

\n
C/C++ -> General -> Additional Include\xc2\xa0Directories -> C:\\Qt\\6.6.0_static\\qml\\QtQuick\\Particles\n\nLinker -> Input -> particlesplugin.lib\n
Run Code Online (Sandbox Code Playgroud)\n

重新编译时,现在我收到一个不同的错误:

\n
1>main.obj : error LNK2019: unresolved external symbol "struct QStaticPlugin const __cdecl qt_static_plugin_QtQuick2ParticlesPlugin(void)" (?qt_static_plugin_QtQuick2ParticlesPlugin@@YA?BUQStaticPlugin@@XZ) referenced in function main\n
Run Code Online (Sandbox Code Playgroud)\n

对于我尝试使用的每个其他QtQuickQ_IMPORT_PLUGIN插件(而不仅仅是keywordsplugin )导入,我也会收到此外部符号错误。

\n

我在文档中找不到任何相关信息,这是怎么回事?

\n