【问题标题】:Using Poco with QtCreator (Windows)将 Poco 与 QtCreator 一起使用(Windows)
【发布时间】:2015-02-03 20:31:23
【问题描述】:

我正在尝试在 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,但遇到类似的错误。

想法?提前感谢您的帮助。

【问题讨论】:

    标签: qt-creator poco-libraries


    【解决方案1】:

    我不熟悉 QtCreator,但 DLL 的工作方式是在构建 DLL 时为应用程序提供(“导出”)的类和函数被声明为 export,但那些相同的函数然后类必须从应用程序端声明为 import。请参阅Foundation.h 以了解这是如何发生的以及您在应用程序端需要哪些定义(您可能缺少 _WIN32 和/或 _DLL,因此可能未定义 POCO_DLL)。通常,这会在构建过程中自动发生 - Foundation_API 将在构建 Poco 库时定义为 export,在构建应用程序时定义为 import

    【讨论】:

      【解决方案2】:

      所以这个问题更多地与 QtCreator 中使用的工具包有关。 MinGW 套件似乎无法与非 MinGW 创建的 DLL 正确链接。在处理来自 Qt/MinGW 的 Poco DLL 时,存在一定程度的名称修改和/或 dllexport 管理不善。我不记得所有具体的错误。此外,MinGW 不是“官方支持的 Poco 端口”。所以这没有帮助;然而,真正的责任在于 QtCreator 中的 MinGW 工具包。

      话虽如此,使用 MSVC2013 编译的 Poco 与上面引用的相同代码运行良好,但使用 QtCreator 中的 MSVC 工具包编译。同样,基于 Unbuntu 构建的 Poco 与我在那里安装的 QtCreator 配合得很好。所以并不是 Poco 不能与 QtCreator 一起工作——而是 MinGW 不能/不能与 Poco 一起工作。

      我希望其他人会觉得这很有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-09
        • 2017-04-05
        相关资源
        最近更新 更多