我怎么才能写出既能在Windows7、Mac (或许也能在linux )上运行的程序呢?
我听说Qt是一个构建跨平台GUI的很好的框架,但我认为每个程序版本都需要重新编译,不是吗?我应该在windows下编译win版本,在mac os x下编译mac版本,在linux下编译linux版本,以此类推?
我得到了一些想法和/或建议
发布于 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 )。
发布于 2011-04-25 23:04:03
不确定C++是否是必须的,但Adobe Air是一个很好的桌面跨平台开发环境,而且它也在不断增长,用于移动开发。如果您需要使用Adobe Air将主要应用程序部署到多个桌面OSes的示例,只需查看tweetdeck http://www.tweetdeck.com/
如果你走这条路,我强烈建议你也去看看Flex和Flash Builder。
发布于 2011-04-26 01:10:45
在编写跨平台程序时,我要强调两个独立的问题--如何使代码可移植,以及如何安排代码在各种不同的平台上构建。
至于构建方面,我会研究像CMake (http://www.cmake.org)这样的跨平台构建系统。实际上,您编写了一个脚本,CMake将为特定平台生成适当的项目文件/makefile。然后,您可以像往常一样在每个平台上构建程序。例如,在Windows上,您可以使用CMake为您生成一个Visual C++项目,然后使用Visual C++实际生成可执行文件。在Linux上,您可以使用CMake生成makefile,然后使用g++构建可执行文件。
另一个方面是如何使代码可移植--关键是编写符合C++标准的代码,并利用本身可以跨您感兴趣的平台移植的库。您可以(有时可能需要)为每种不同的平台编写特定于平台的代码--如果这样做,您应该将其隐藏在可移植的界面后面,并让其余的代码使用该界面。
https://stackoverflow.com/questions/5779659
复制相似问题