You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CMake创建独立QML模块的自定义ImageProvider插件遇链接错误

解决QML独立ImageProvider模块链接错误问题

问题现象

构建时链接器报错:

/usr/bin/ld: CMakeFiles/nVision-app.dir/main.cpp.o: in function _GLOBAL__sub_I__Z16printQtResourcesb': main.cpp:(.text.startup+0x6e): undefined reference to qt_static_plugin_ImgProvPlugin()'

解决步骤

1. 主应用链接插件模块

修改根目录下的CMakeLists.txt,在target_link_libraries中添加插件目标imgprovplugin,让主程序能找到插件的静态符号:

target_link_libraries(${APP_TARGET} PRIVATE 
    Qt6::Gui
    Qt6::Qml
    Qt6::Quick
    imgprovplugin  # 新增:链接到自定义ImageProvider插件模块
)

2. 配置插件模块为静态构建

修改cpp/imgprov/CMakeLists.txt,在qt_add_qml_module中添加STATIC选项——因为Q_IMPORT_QML_PLUGIN用于静态导入插件,必须确保插件编译为静态库:

qt_add_qml_module(${MODULE_TARGET}
    URI ImgProv
    PLUGIN_TARGET ${MODULE_TARGET}
    NO_PLUGIN_OPTIONAL
    NO_GENERATE_PLUGIN_SOURCE
    CLASS_NAME ImgProvPlugin
    SOURCES ${HEADERS} ${SOURCES}
    STATIC  # 新增:指定模块为静态构建
)

3. 验证插件代码正确性

确保plugin.cpp中的插件类实现符合要求:

  • 正确继承QQmlEngineExtensionPlugin
  • Q_PLUGIN_METADATA的IID设置为QQmlEngineExtensionInterface_iid
  • 在initializeEngine中正确添加ImageProvider

完成以上修改后,重新构建项目即可解决链接错误。

内容的提问来源于stack exchange,提问作者skaldesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 14:30:06