从Windows API迁移到Mac OS

时间:2009-09-29 12:46:30

标签: windows macos winapi porting

我是一名Windows(本机而非.NET)程序员,我想将应用程序移植到Mac上。

实际上,我认为它更像是一个重写,因为原始版本取决于许多activex控件。

由于我一生中从未使用过Mac,我需要一些指导。 O :-)

a)您建议从Win32迁移到Mac OS的哪本书? b)Mac上有类似Delphi(RAD)的东西吗? c)任何人都可以推荐(或不推荐)Lispworks(www.lispworks.com)吗? d)是否有类似于第三方COM组件的Windows市场(所以我不必写所有内容)? e)我还应该注意Mac市场吗? f)哦,BTW,我应该买什么Mac? O :-)(必须是笔记本电脑)

提前致谢

5 个答案:

答案 0 :(得分:9)

我已经向几位经验丰富的Windows程序员教过Cocoa编程。您可能会发现该主题的previous post有用。

可可是一种与MFC及其亲属完全不同的思维方式。如果您花时间了解Cocoa如何处理事物并适应其思维方式,而不是试图找到在ObjC中实现当前思维方式的最快方式,那么您将做得更好,更好。可以为Mac编写MFC样式的代码,但如果你这样做,你将永远与框架作斗争。我见过很多Windows开发人员都在努力解决这个问题。

学习Cocoa的最佳书籍是Cocoa Programming for Mac OS X。假设您是一位具有扎实OOP背景的C ++开发人员,这本书就是这本书的开头。如果您的面向对象背景有限,请从Programming Objective-C 2.0开始。

一旦理解了模式,您会惊讶于Objective-C可以快速编码。根据我的经验,与C ++相比,它确实令人惊叹。有更多类似RAD的系统,如REALbasic,你现在可以用Ruby开发Cocoa应用程序,这可以更快一些。但在ObjC的Mac市场上确实没有替代品。在没有使用Mac框架的情况下制作一个像Mac应用程序一样的应用程序很难,而Mac用户往往对这些事情比Windows用户更加苛刻。

我没有LispWorks的背景,但LISP似乎是开发Mac应用程序众所周知的丰富用户界面的一种糟糕的语言。我喜欢LISP(实际上非​​常多),但是功能编程的“无副作用”哲学似乎与大多数丰富的UI目标不一致(特别是当Mac UI变得越来越以动画为中心时)。如果有的话,Mac编程正朝着声明而非功能编程的方向发展(核心动画和Grand Central Dispatch有许多声明性概念在悄悄进行)。

没有像Windows那样大的第三方组件市场。其中一些原因是因为Cocoa已经提供了如此丰富的组件,而MFC没有这样做,并且因为行为良好的Mac应用程序需要使用这些组件,以便您像所有其他Mac应用程序一样工作。 RadControls for .NET(非常好的工具包,那个)的商业组件市场肯定很少。但是有很多不错的免费组件可以使用灵活的许可证(通常是基于MIT的)。我的一些最爱:

正如我之前提到的,Mac用户对他们的UI很挑剔。比Windows用户更多,更多。他们希望事情能够得到完善,并且他们希望能够将所有能够与Mac相结合的小东西融为一体。这意味着拖放,Spotlight,服务,Applescript,Expose,QuickLook,集成拼写检查等。如果你不使用内置框架,很难做好所有这些事情。这就是为什么我建议新的Mac开发人员从一开始就学习框架。

对于Mac,如果你周围有一堆硬件(如键盘和显示器),那么Mac Mini就是一个不错的便宜盒子。如果您想要一体机,iMac非常棒,如果您喜欢便携性,任何MacBook都是合适的。目前市场上没有Mac,这不是一个完美的开发盒。显然,如果你做了很多工作,8核Mac Pro可以让编译速度更快,但我已经在13英寸MacBook上做了很多专业开发。如果你想尽可能便宜地进入,请寻找{ {3}}或者使用过(我喜欢翻新的Mac Mini)。任何基于Intel的Mac都可以用于开发,至少在你开始使用时。

答案 1 :(得分:2)

如果您熟悉C,则可能需要学习Objective C,因为这是Mac的“本机”编程语言。这也是你必须用来编写iPhone应用程序的东西。 Cocoa是Apple的主要API,它将拥有您正在寻找的许多工具。

a)阅读此主题以获取图书建议:https://stackoverflow.com/questions/7571/cocoa-and-objective-c-resources

b)Apple让Xcode进入开发阶段。当然有更好的产品,但它还不错。

d)Cocoa是Apple的主要API,它提供像CFNetwork这样的网络核心服务。还有核心数据,核心音频,核心动画,核心图像,核心位置......总而言之,OSX是Unix,所以你可以访问许多unix / linux库。

e)iPhone是Mac市场的重要组成部分。 iPhone和OSX开发环境没有什么不同,所以你可以学习它们。

f)任何Mac都适合大多数开发。如果你想要一台笔记本电脑,这真的是屏幕尺寸和价格的问题。但我会建议至少15英寸的屏幕。您不需要为更快的CPU花费额外的费用,但您可能希望获得更大的硬盘驱动器。

答案 2 :(得分:1)

如果您使用C和/或C ++完成了本机Windows编程,则可以更轻松地将应用程序迁移到C#/。Net,然后使用Mono在Mac中运行它。至少部分可用的第三方.Net组件将在Mono上运行(请参阅http://www.mono-project.com/Third_Party_Controls_Status)。

我不知道你应该买什么Mac - 我建议买一个漂亮的Mac。

答案 3 :(得分:1)

e)它是一个小市场。

f)iMac。编辑:因为它说笔记本电脑 - Macbook Pro 13是一个很好的。

答案 4 :(得分:1)

a)...

b)你可以使用Python和wxPython并且是跨平台的。 Mac OS X默认包含Python。

c)......

d)我确定有,但我不能告诉你更多。 如果你使用Python,你就可以获得大量免费的第三方库。

e)他们不善待alien GUI guidelines

  

Word 6.0于1993年推出,被广泛认为是Mac上最糟糕的Word版本,因为它基于与Word 6.0 for Windows相同的代码库。这意味着它看起来和工作更像Windows软件而不是Macintosh程序。 Mac用户如此紧张,以至于微软实际上将Word 5.1降级为不满意的Word 6.0用户。

f)大多数iMac都适合编程。选择你最喜欢的那个并且有很多RAM。