如何调用Qt Quick 2 Extension Plugin的方法?

时间:2017-03-14 07:32:18

标签: c++ qt qtquick2

我有一个Subdirs项目,有两个子项目。一个是Qt Quick Controls 2应用程序,另一个是Qt Quick 2 Extension Plugin。

TestQtQuickPlugin    ( Subdirs project )
    |----app         ( Qt Quick Controls 2 Application )
    |     |------main.cpp
    |    ...
    |----plugin      ( Qt Quick 2 Extension Plugin )
    |       |----MyItem.h
    |       |----MyItem.cpp
    |      ...

MyItem类继承自QQuickItem,它有一个方法 int getNum()。在main方法中,我将通过 MyItem()。getNum()调用此方法。

在Ubuntu中,它编译并运行成功。但在Windows中,它出现错误:

  

main.obj:错误LNK2019:未解析的外部符号" public:__ cdecl MyItem :: MyItem(类QQuickItem *)" (?? 0MyItem @@ QEAA @ PEAVQQuickItem @@@ Z)在函数main中引用

     

main.obj:错误LNK2019:未解析的外部符号" public:virtual __cdecl MyItem :: ~MyItem(void)" (?? 1MyItem @@ UEAA @ XZ)在函数main

中引用      

main.obj:错误LNK2019:未解析的外部符号" public:int __cdecl MyItem :: getNum(void)" (?getNum @ MyItem @@ QEAAHXZ)在函数main

中引用

我的项目出了什么问题?

1 个答案:

答案 0 :(得分:1)

Windows在创建动态链接库时使用“符号隐藏”。

为了使符号在这样的库外“可见”,需要“导出”。

请在此处查看documentation

通过为g ++设置相应的标志,实际上也可以在Linux上启用它。