【问题标题】:C++ Cross platform development (Windows and Mac OS)C++ 跨平台开发(Windows 和 Mac OS)
【发布时间】:2013-11-11 21:50:19
【问题描述】:

我有新的任务来研究开发 C++ 跨平台 (Mac/Win) 实用程序以满足我们内部需求的方式。

我已经使用不同的“粉红色”语言开发了 7 年,例如 C#、Java、托管 C++。 但是在这个任务中,要求是支持 Mac,而在 Mac 上运行的 .NET 真的很痛苦(从其他使用过这个的人那里知道这一点)。

所以我开始考虑 C++ 是否可以使用 C++ 进行跨平台开发。 该应用程序不会包含任何 GUI,但会包含大量系统 API 调用和大量业务逻辑分析。

是否有可能一些库允许实现这种任务? 有可能吗?

【问题讨论】:

  • C++ 似乎是一个不错的选择。使用现代编译器(GCC 或 Clang,最新版本),使用 C++11 和标准库。如果您需要更多,可以使用多个图书馆收藏,请至少查看 BoostPOCO
  • 伙计,抱歉这个愚蠢的问题,很遗憾我不知道原生编译是如何工作的,但我的意思是如果我调用简单的 CreateProcess winApi 函数,它适用于两个平台吗?
  • 它不会直接工作,这就是为什么你使用库来封装平台之间的差异,例如std::thread 将在编译器及其标准库支持的所有平台上创建一个新线程。

标签: c++ windows macos cross-platform cross-compiling


【解决方案1】:

如果我正确理解了您的问题,那么您开发跨平台 c++ 唯一需要做的就是获得正确的编译器。您可以在两个平台上使用 GCC,甚至可以为 Visual Studio 和 xcode 使用 2 个不同的项目文件。这取决于你。就个人而言,我更喜欢 GCC。

关于代码本身,这取决于你用它做什么。 STD 在两个平台上都可用(std::vector、std::string 等),因此代码应该在两个平台上都能正确编译。

编辑:顺便说一句,大多数平台特定的东西都可以通过开源代码获得(比如 boost,虽然我个人不太喜欢 boost)。如果需要,您甚至可以查看其他跨平台的开源项目(ogre3d 等)。

【讨论】:

    【解决方案2】:

    是的,您可以编写标准的 ISO C++ 并在两个平台上运行程序。

    当您需要使用特定于平台的 API 来实现某些功能时(例如,在 Windows 上使用 Win32 和在 Mac OS 上使用 POSIX API),那么您要做的就是编写自己的包装器函数来抽象出平台特定的细节,然后使用该包装器在你程序的其余部分中。

    CMake 等工具将允许您使用 Visual Studio 在 Windows 上构建程序,并在 Mac 上构建程序,而无需手动管理单独的 Visual Studio 和 Xcode 项目文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      相关资源
      最近更新 更多