我有一个Subdirs项目,有两个子项目。一个是QtQuickControls2Application,另一个是QtQuick2扩展插件。
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()。在主要方法中,我将通过MyItem().getNum().调用该方法。
在Ubuntu中,它编译并成功运行。但是在Windows中,它会发生错误:
main.obj : error LNK2019:未解决的外部符号"public:__cdecl MyItem::MyItem(class QQuickItem *)“(?0 MyItem@QEAA@PEAVQQuickItem@Z) main.obj : error LNK2019:未解决的外部符号"public: virtual::~MyItem(Void)“(??1 MyItem@@UEAA@XZ) main.obj : error LNK2019:未解决的外部符号"public: int __cdecl MyItem::getNum(void)“(?getNum@MyItem@QEAAHXZ)
我的项目有什么问题?
发布于 2017-03-14 08:39:31
Windows在创建动态链接库时使用“符号隐藏”。
为了使符号在这样的库外“可见”,它们需要“导出”。
看这里的文档。
实际上,也可以通过为g++设置相应的标志在Linux上启用这一功能。
https://stackoverflow.com/questions/42780130
复制相似问题