【问题标题】:Building C++ cross-platform static libraries构建 C++ 跨平台静态库
【发布时间】:2011-06-04 16:50:03
【问题描述】:

我想用 C++ 构建跨平台的静态链接库。

我应该怎么做(我是一个完整的 NOOB,从未使用过 g++、gcc、mingw 等我在互联网上寻找解决问题的方法,但没有找到任何东西。除了 mingw 是适用于 Windows 的极简主义 GNU...)?我一直在 windows 上使用 Visual c++,但现在我必须构建将附加到 Qt 项目的 lib:windows、mac、linux。

如果有人知道一个很好的教程,关于使用编译器,以及如何构建库,我会很感激在这里分享它们:)

谢谢,愿力量与你同在

【问题讨论】:

  • 我什至会忘记尝试它。这不是一个“菜鸟”应该做的事情。
  • 我的意思是我会将它们包含在 Qt 应用程序中,该应用程序将在 mac、windows、linux 上使用。我的问题衍生自这个问题:*.com/questions/6236603/…
  • 您的问题源于您不熟悉 Qt 本身以及 Mac 和 Linux。您应该学习 Qt,同时在您的团队中寻找精通 Qt 和 Mac 以及精通 Qt 和 Linux 的人。
  • 没有所谓的“跨平台静态链接 C++ 库”。您必须分别为每个平台编译库。不过,您的库的源代码可以是跨平台的。
  • @Oo Tiib:我刚刚在 Windows 中编写了一个 Qt 实用程序应用程序,当我在 Linux 中编译和运行(在每个平台上使用 Qt Creator)时,它开箱即用。我相信这在 Mac 上会同样简单。使用 Qt,为每个平台配备一个专家是多余的,除非它是用于一些主要应用程序,如成熟的 Web 浏览器或文字处理器。如果您在一个平台上了解 Qt,那么您对所有平台都了解。

标签: c++ cross-platform static-libraries


【解决方案1】:

MinGW 是一个非常好的编译器!我用它所有的时间。尽管 MinGW 代表 Minimalist GNU for Windows,但 MinGW 拥有使用 C++ 或 C 编程所需的一切。如果您正在创建 QT 应用程序,我建议使用 QT Creator(只需 google 即可)。最近没用过,不过我觉得它支持跨平台编译(MinGW也是,有一些命令行命令...)。

不过,最好的交叉编译方法是获取您要编译的每个操作系统的副本。因此,如果您使用的是 Windows、Mac 和 Linux,我建议您各买一个(Mac OS X 大约 25 美元,Linux 是免费的)。然后只需使用包含的编译器(Mac 上的 XCode;Linux 上的 GCC)进行编译。不幸的是,当您执行交叉编译时,您需要单独支持每个操作系统(某些部分可以在操作系统之间共享)。

由于您将使用工具包 (QT),因此您可能不必过多担心特定于平台的调用或任何事情。只要确保您使用的是 QT typedef 和 structs 而不是 Microsoft Windows 的...

【讨论】:

  • 你的意思是他/她应该使用 Microsoft QT typedef 和 structs 而不是 Microsoft Windows :-)
  • 是的,使用 QT 提供的而不是 Windows SDK 提供的(“wtypes.h”或“wctypes.h”)。
  • 也许您应该在发布主题之前先了解“交叉编译”的含义?
  • 也许我的问题不一样-> 为什么在这里:*.com/questions/6236603/… 使用 Qt 构建的库导致错误,但从 gnuwin32.sourceforge.net/packages/freetype.htm 下载的库没有?
  • 我的只是一个关于 MS 的坏笑话,它收购了 ^H^H^H^H^H^H^H^H 与 QT 的所有者诺基亚签署了合作伙伴关系