我正在尝试在QtCreator中使用Poco 1.6.0,我的构建中出现了一些奇怪的错误。大多数错误都遵循以下主题:
warning: 'void Poco::Dynamic::Var::swap(Poco::Dynamic::Var&)' redeclared without dllimport attribute after being referenced with dll linkage
我用MinGW制作了Poco并计划使用它,但无济于事。我也用VS2012制作了Poco,但也遇到了类似的错误。
思考?提前感谢您的帮助。
答案 0 :(得分:0)
我不熟悉QtCreator,但DLL的工作方式是在构建DLL时为应用程序提供(“导出”)的类和函数被声明为 export ,但这些功能相同然后必须从应用程序端将类声明为 import 。请参阅Foundation.h以了解这是如何发生的以及在应用程序端定义的需要(您可能缺少_WIN32和/或_DLL,因此可能未定义POCO_DLL)。通常,这会在构建期间自动发生 - 在构建Poco库时,Foundation_API将定义为 export ,在构建应用程序时, import 。
答案 1 :(得分:0)
所以这个问题更多地与QtCreator中使用的套件有关。 MinGW套件似乎与非MinGW创建的DLL无法正确链接。在处理来自Qt / MinGW的Poco DLL时,存在一定程度的名称错误和/或dllexport错误管理。我不记得所有具体的错误。此外,MinGW不是“官方支持的Poco端口”。所以这没有帮助;但是,QtCreator中的MinGW套件确实存在责任。
尽管如此,使用MSVC2013编译的Poco与上面引用的相同代码运行良好,但在QtCreator中使用MSVC工具包编译。同样,在Unbuntu上构建的Poco在我的QtCreator安装中运行良好。因此,并非Poco不能与QtCreator合作 - 这是MinGW没有/不与Poco合作。
我希望其他人觉得这很有帮助。