首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写跨平台程序

编写跨平台程序
EN

Stack Overflow用户
提问于 2011-04-25 22:58:57
回答 5查看 1.6K关注 0票数 4

我怎么才能写出既能在Windows7、Mac (或许也能在linux )上运行的程序呢?

我听说Qt是一个构建跨平台GUI的很好的框架,但我认为每个程序版本都需要重新编译,不是吗?我应该在windows下编译win版本,在mac os x下编译mac版本,在linux下编译linux版本,以此类推?

我得到了一些想法和/或建议

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-25 23:00:53

底层的二进制格式在每个平台上都是不同的,所以除非您使用虚拟机(如Java或Flash ),否则您必须在每个平台上重新编译您的程序。

有些编译器(如GCC)允许交叉编译,但设置起来并不容易。在Linux上进行交叉编译可能是最简单的系统(有几个开放源码项目设置了从Linux到Windows的交叉编译)。

对于图形用户界面应用程序,这取决于语言--如果您坚持使用C++,Qt或wxWindows可能是在本机窗口系统上提供抽象层的合理选择。

如果您可以使用Java,它会使工作变得更简单,但是窗口系统是Java的,而不是本地的。

另一种值得考虑的语言是FreePascal w/ Lazarus --它有一个非常好的图形用户界面设计器,可以编译成每种平台上的本机窗口系统(在Windows上是WinAPI,在OSX上是Cocoa,在Linux上是GTK )。

票数 5
EN

Stack Overflow用户

发布于 2011-04-25 23:04:03

不确定C++是否是必须的,但Adobe Air是一个很好的桌面跨平台开发环境,而且它也在不断增长,用于移动开发。如果您需要使用Adobe Air将主要应用程序部署到多个桌面OSes的示例,只需查看tweetdeck http://www.tweetdeck.com/

如果你走这条路,我强烈建议你也去看看Flex和Flash Builder。

票数 4
EN

Stack Overflow用户

发布于 2011-04-26 01:10:45

在编写跨平台程序时,我要强调两个独立的问题--如何使代码可移植,以及如何安排代码在各种不同的平台上构建。

至于构建方面,我会研究像CMake (http://www.cmake.org)这样的跨平台构建系统。实际上,您编写了一个脚本,CMake将为特定平台生成适当的项目文件/makefile。然后,您可以像往常一样在每个平台上构建程序。例如,在Windows上,您可以使用CMake为您生成一个Visual C++项目,然后使用Visual C++实际生成可执行文件。在Linux上,您可以使用CMake生成makefile,然后使用g++构建可执行文件。

另一个方面是如何使代码可移植--关键是编写符合C++标准的代码,并利用本身可以跨您感兴趣的平台移植的库。您可以(有时可能需要)为每种不同的平台编写特定于平台的代码--如果这样做,您应该将其隐藏在可移植的界面后面,并让其余的代码使用该界面。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5779659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档