将 Poco 与 QtCreator 结合使用 (Windows)

Using Poco with QtCreator (Windows)

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

想法?在此先感谢您的帮助。

我不熟悉 QtCreator,但 DLL 的工作方式是 类 和构建 DLL 时应用程序可用的函数 ("exported") 声明为 export,但是那些相同的函数和 类 然后必须从应用程序端声明为 import。请参阅 Foundation.h to understand how this happens and which defines you need on the application side (you could be missing _WIN32 and/or _DLL so POCO_DLL 可能未定义)。通常,这会在构建期间自动发生 - Foundation_API 将在构建 Poco 库时定义为 export,而在应用程序构建时将定义为 import建成。

所以这个问题更多地与 QtCreator 中使用的工具包有关。 MinGW 套件似乎无法 link 正确处理非 MinGW 创建的 DLL。在处理来自 Qt/MinGW 的 Poco DLL 时,存在某种程度的名称修改 and/or dllexport 管理不善。我不记得所有具体的错误。此外,MinGW 不是 "officially supported port of Poco"。所以那没有帮助;然而,责任实际上在于 QtCreator 中的 MinGW 工具包。

综上所述,使用 MSVC2013 编译的 Poco 与上面引用的相同代码运行良好,但使用 QtCreator 中的 MSVC 套件编译。同样,基于 Unbuntu 构建的 Poco 与我在那里安装的 QtCreator 配合得很好。所以并不是 Poco 不能与 QtCreator 一起工作——而是 MinGW 没有t/doesn不能与 Poco 一起工作。

希望对其他人有所帮助。