Slashdot Mirror


Apple Win32 to OS X Porting Guide

BoomerSooner writes "Apple has released a Win32 to Mac OS X Porting Guide for C/C++ developers. This Guide is to get you started porting an existing procedural Win32 application written in C or C++ to Mac OS X. It looks like Apple is getting a bit more aggressive toward Microsoft."

25 of 285 comments (clear)

  1. Step #1 by swordboy · · Score: 3, Interesting

    Get this!

    It does wonders for cross-platform development.

    --

    Life is the leading cause of death in America.
    1. Re:Step #1 by Anonymous Coward · · Score: 5, Informative
      I have developed with Codewarrior for years. Yes, the compiler suite is cross platform... or more correctly "Metrowerks make products for both platforms".

      NO, the API is not cross platform. MFC/Win32 on Windows, Carbon/Cocoa/Toolbox on the Mac. API code you write for one is not compatible with the other

      Just so you know, before you go out downloading CW from hotline.

    2. Re:Step #1 by ajiva · · Score: 3, Funny

      Get this

      It does wonders for cross-platform development

  2. Huh? by phillymjs · · Score: 4, Funny

    That's funny. I'm on a Mac and yet my mouse has two buttons and a scroll wheel that can be a 3rd button.

    And what are these "floppies" of which you speak?

    ~Philly

  3. Re:X-OSX? by Anonymous Coward · · Score: 5, Informative

    Why yes there is....

    http://developer.apple.com/techpubs/macosx/Darwi n/ GettingStarted/PortingUNIX/

  4. Documentation Overdue by masonbrown · · Score: 3, Interesting

    It's great to see all this documentation coming out. For the first couple of years, it was difficult at best to find any information about the internals of MacOS X. I still don't know of any decent reference for NetInfo administration. O'Reilly's helped alot though.....

  5. Marklar by Znonymous+Coward · · Score: 4, Interesting
    >> It looks like Apple is getting a bit more aggressive toward Microsoft.

    The ultimate aggressive move would be to release Marklar, the x86 version of Mac OS X.

    --

    Karma: The shiznight, mostly because I am the Drizzle.

    1. Re:Marklar by Twirlip+of+the+Mists · · Score: 4, Funny

      The ultimate aggressive move would be to release Marklar, the x86 version of Mac OS X.

      I'm sorry, but I think you typed "aggressive" when you meant to type "suicidal."

      It's a common mistake. The keys are right next to each other.

      --

      I write in my journal
  6. Panic in the streets of Redmond! by Anonymous Coward · · Score: 3, Insightful

    It looks like Apple is getting a bit more aggressive toward Microsoft.

    Yeah, I heard the Fiji Islands are getting more aggressive towards the USA, too. Somehow, I don't think that will make much of a difference. Apple has two percent of the market, people. That's less than Linux. Hell, that's probably less than OS/2! If Apple had any guts, they'd release an x86 version of OS X. But they know they'd lose, so they won't.

    1. Re:Panic in the streets of Redmond! by Znonymous+Coward · · Score: 3
      >> If Apple had any guts, they'd release an x86 version of OS X. But they know they'd lose, so they won't.

      Wait until Microsoft starts with this Palladium thing. Market conditions will be just right for an x86 release for Mac OS X.

      --

      Karma: The shiznight, mostly because I am the Drizzle.

  7. Re:Oops by glwtta · · Score: 5, Funny
    Hit the wrong 'reply' link.

    Getting confused by all the buttons? ;)

    --
    sic transit gloria mundi
  8. MFC?? by shlong · · Score: 4, Insightful

    I hate to say this, but this 'guide' is rather useless and looks to be little more than a reprint of marketing glossies. Don't get me wrong, I love OSX. But to imply that you can easily port MFC apps to Cocoa is humorous. Even rewriting an MFC app in Cocoa will most likely be highly frustrating due to your engineers having to change their mentality from one to the other.

    --
    Cat, the other, tastier white meat.
  9. Advice to Geeks about to try out mac osx by goombah99 · · Score: 5, Informative

    Sorry to repost this but it gets tiresome to see the same misinformation out there. read on.

    Dear Unix user, welcome to mac. If you trust me you will just do all of the following without asking why, before you start whining about features you miss. The following is a no-fat-added list of essential customization for unix users converting to the mac world.

    1. The Mouse.
    Go buy a 3 button USB mouse. Make sure you get an optical mouse with a wheel. Buy the most expensive one you can. Heriditary mac users prefer a 1 button mouse, but you wont.

    2. The Terminal.
    Open /Applications/Utilities. Drag the terminal.app to the Dock

    3. File system journaling
    Open the terminal.app and type
    sudo diskutil enableJournal /Users
    Just do it. This can be undone and you can change how you want it later.

    4. The Compiler
    Regardless of what compiler you prefer, you need the native compiler and libs. Go to
    http://developer.lanl.gov and register for free. Enter the site and select the downloads option. Scroll through the list till you find "developer tools", download and install it.

    5. Installing GNU ports part 1.
    Goto http://sourceforge.com and find the latest stable release of "fink" for mac os X. download and install it. There will be some questions to answer, just choose the defaults except if offered, ask it to get updates from CVS.

    6. Install X-windows part 1
    If you have 5 hours to you can wait, type in the terminal
    fink install xfree86-rootless
    this is preferred as it gets the latest release of a fast changing package.
    If you are in a hurry you can install the binary.
    Type
    sudo dselect
    Quick intro to dselect: after some preliminaries you are offered the chance to choose packages from a list. Use the down-arrow key to move down and find xfree86-rootless.
    Press the + key to select it. You will be offered "conflict resolution": accept the defaults by pressing return. Then return again to exit the selection. DO NOT GET GREEDY and select other packages yet. Finish the installation.

    7. Installing X-windows part 2: the window manager
    You may prefer fvwm2 or some other window manager but take my advice and try out oroborus first. Oroborus does things the mac way, and later you will be glad you did even if its not familiar at first. Oroborus deliberately eschews many popular features, letting the OS provide those services. For example, if you want virtual screens you DO NOT want them as part of the windows manager! You want them as part of Aqua so that they apply to both aqua and to x-windows. Likewise you want the Dock to manage minimizing windows not the window manager.
    Go to http://apple.com click the OSX tab, then the downloads tab and find oroborus.
    Note: the oroborus that comes with Fink/dselect is not quite the same thing.

    8. Installing GNU ports part 2.
    Use dselect or fink to install a few packages. Fink has about 2000 packages available including your favorite parts of kde and gnome. To see what's avalaible type
    fink list | more
    just for practice try installing gv (ghost view) and xemacs.
    Remember, dselect will install binaries (fast), and fink will install source (slow), generally dselect is a good idea. Once a month type "fink update-all" or update packages in dselect.

    9. Text editor
    Goto http://www.barebones.com and get a free copy of bbedit "lite". I recommend buying the full version, especially to geeks. Note that you can save files in unix/mac/PC formats which have different end of line characters. Despite the name, on a mac you should normally use unix format. Mac mode is mainly for historic reasons but gums up unix commands. Even if this (amazingly) does not turn out to be your preferred editor, you should install it anyhow so that it is there for guests.

    10. Mounting network disks
    You can mount NFS disks by creating a file that looks just like the usual /etc/fstab file. It does not matter where you put it since the mac will ignore it. To mount the disks type "sudo niload fstab" followed by the file path name. However, don't do this right away till you have more experience. Instead do the following.
    In the finder window, select go>servers. In the text field type
    nfs://xxx.xxx.xxx.xxx/hostpath
    Where xxx.xxx.xxx.xxx is the ip address or domain name of the host with the disk, and /hostpath is the exported fs. The disk will be mounted in /Volumes and be "aliased" to the desktop.
    To mount windows network disks we use
    smb://xxx.xxx.xxx.xxx/path
    Be nice and unmount your disks (throw them in the trash) before disconnecting from the net.

    11. using X windows across the network.
    All the usual stuff (like xhosts and DISPLAY) works as expected. However you do need to activate oroborus (which will fire up X-windows) since its not on by default. However, before you do this let me suggest an alternative you may find better. Goto http://apple.com and on the osx downloads page locate VNCdimension (or VNCthing) and install this application. On the X windows client, run vncserver. And on the mac attatch to it using VNC dimension. On anything but the fastest network connection you will find this smoother and faster than using x-windows. Plus its more secure and even runs through firewalls. At present much of X-windows on the mac is not graphics accelerated, but VNC dimension which runs in aqua is.

    12. Shortcuts worth knowing about
    On your unix machine to run netscape you type /usr/bin/Netscape &
    on a mac you type
    open /Applications/Netscape
    to open the file browser at the current working directory type
    open . (note the period)
    to open a web page type
    open http://macosxhints.com

    13. Pitfalls
    There are few pitfalls in the file system you need to know about early on.
    First be careful with cp,mv,rsync, and tar. For 99.9% of the time they work as expected. But a lot of mac applications and mac documents store info in something called the "resource fork" of a file. Unix files only have a single data fork. Mac files have a data and a resource fork. The data fork is the same as what you would see on the unix system. The resource fork can contain almost anything, but usually contains unimportant meta-information about the file itself like what app created it, and so on. But sometimes it contains crucial information (e.g quicken).
    When you do a unix cp or mv or tar all you get are the data forks. The rule of thumb is this: if your file can be used by a unix program then dont worry about the resource fork. Most modern mac apps do not use the resource fork but older ones do.

    Second, mac filenames are case-insensitive but case preserving. Thus ReadME and readme are the same file.

    Third, unfortunately, for backwards compatibility there are two different kinds of soft links on a mac. One is the usual unix soft link and the other is the "alias" function of the OS. The OS is smart enough to recognize the unix links and treat them as file aliases in the GUI. But the reverse is not true. Generally you are better off using the unix soft links.

    Fourth, macs have three layers of file permissions where unix has one. Macs have the usual unix permissions. Plus there is an ability to lock a file against changes or deletion, and finally there is the ability to lock a file against modification even by root. generally you wont ever need either of the latter two, but you may someday find a file you cant seem to delete! just in case, the normal file lock is accessed via "get info"

    Fifth, fstab, exports, shadowpassword, passwd, and most unix configs don't work the way you expect. Use the admin tools to alter netinfo configuration data. (see root below)

    14. Thinking mac-like.
    First off you never need to touch the other mouse buttons outside of x-windows. Second, try to adopt apple applications where they exist to replace you current favorites. For example, use the mail.app instead of pine or Eudora. Sure these have nice features, but long term apple apps will stay more tightly integrated: for example, mail.app links to addressbook which links to iCal. Third, Chill-out dude. Macs force you to do things a certain ways with warning dialog boxes or focus-on-click windows. These are not worse than other ways, and long term you will come to see the benefits from the cross-application uniformity of operations. Unmount disks, especially network disks, by tossing them in the trash. (you may want to add an eject button to the finder menu)

    15. Viruses, Worms, holes, etc...
    Regularly use the software update feature. Bugs get patched quickly. Historically, the only security holes you must stay on top of are Microsoft Internet Explorer holes, Microsoft Entourage/outlook holes, and Microsoft macro viruses. Don't bother worrying about anything else till you worry about these. Many people use Chimera for this reason.

    16. Root
    If you read just one book try "mac OS X for unix geeks", most other books aren't for you because they are trying to explain unix to mac-heads. Avoid using root when you can use an admin tool or sudo instead. Apple has not fully document root admin, so stick with tools. Except don't ever play with netinfo manager or niload until you have a lot of experience, as there is no faster way to make your mac unbootable.

    17. Goodies
    There are virtual window managers at mac OSX downloads.
    Try out Watson at http://www.karelia.com/watson/
    Microsoft office X is a great program even if it is made by Microsoft.
    Scientific plotting: You may like Igor from wavemetrics.com since it has both command line and menu driven interface. Fink comes with R, Octave and Gnu-plot. Mathematicians may prefer mathematica.
    If you have a powerbook, put the dock on the left and make it small.
    Turn off autostart on OS 9.0
    Discover iTunes.
    Consider a mac.com account
    Read http://macosxhints.com

    --
    Some drink at the fountain of knowledge. Others just gargle.
    1. Re:Advice to Geeks about to try out mac osx by Pope · · Score: 3, Informative

      You forgot about signing up for a free Apple Developer Connection membership and getting Apple's developer software for free!

      http://connect.apple.com/

      --
      It doesn't mean much now, it's built for the future.
    2. Re:Advice to Geeks about to try out mac osx by Etcetera · · Score: 3, Interesting


      13. Pitfalls

      Third, unfortunately, for backwards compatibility there are two different kinds of soft links on a mac. One is the usual unix soft link and the other is the "alias" function of the OS. The OS is smart enough to recognize the unix links and treat them as file aliases in the GUI. But the reverse is not true. Generally you are better off using the unix soft links.


      Great post, but I have to take issue with this one. MacOS aliases are far superior to symlinks IMHO. By storing the file ID and other meta-information about the original file (creation date/time, modification date/time, file name, size, creator, type, etc...), the alias has a much higher chance of identifying the proper file should the original file move.

      In fact, you can do pretty much anything to a file you want (short of moving it to another volume and deleting the original) and chances are the alias will still be able to track it down (and update itself) when you double-click it.

      It's an old-school MacOS concept that Unix geeks would do well to learn from.

    3. Re:Advice to Geeks about to try out mac osx by jafac · · Score: 4, Informative

      SWEET.

      Even as a veteran Mac user and unix wannabe for the past several years, I learned a lot from your post. Comments:

      1. Older Macs (Beige G3) have ADB instead of USB - and nobody is writing device drivers for ADB devices in OSX. So if you have one of these older machines, *DO* invest in a USB card. However, with 10.2, there seems to be some whacked out performance bug with USB devices that slows the whole system down, so you might want to stick with 10.1.5 until they've nailed it. No, 10.2.3 does NOT fix it.

      2. I can't recommend highly enough, the wonderful shareware terminal replacement, GLTerm. It's so much faster than the regular terminal, you'll often wonder just what the hell terminal.app is doing with all it's time. Maybe browsing the net for porn? Who knows?

      7. Orobourous is extreeeeeeemely unstable. Unless they've fixed it since I tried it 6 months ago. I think Windowmaker is best. It's patterened after the NeXT GUI - so it's really the GUI OS X *should* have, was meant to have.

      9. mi is a great little editor - and it's free.

      13. 'ditto' is the command-line copy utility that is "resource fork" aware.

      14. One of the great joys in life is opening new browser tabs in the background by clicking on links with the scroll-wheel button in Chimera. Chimera is great for it's non-bloatedness, but it REALLY need's ad-server blocking like it's older brother, Mozilla.

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
    4. Re:Advice to Geeks about to try out mac osx by benedict · · Score: 3, Informative

      I'm a unix user since 1996, I don't mind using a
      one-button mouse.

      Why journaling? It's not useful for most people.

      The compiler should be gotten from Apple, not from
      lanl.gov. And developer.lanl.gov doesn't exist.

      The window manager to use is OroborOSX, not
      oroboros. That's why it's different from the one
      in fink.

      The "extra layers of file permissions" you speak
      of are not unique to Mac OS X. On any BSD
      system, look at the man page for chflags(1), and
      see the '-o' option to ls(1).

      Starting with version 10.2, some of the files in /etc are checked before NetInfo. So some of
      those files you mention _can_ be used in the
      traditional way.

      I don't think it's very cool to complain about
      misinformation and then post a ton of it. You
      posted some excellent advice as well, but I was
      only able to tell the wheat from the chaff
      because I'm already familiar with unix and Mac OS X.

      --
      Ben "You have your mind on computers, it seems."
  10. Re:Useless by blamanj · · Score: 4, Informative

    Perhaps you didnt notice there were links to additional pages?

    * 2D graphics
    * 3D graphics
    * User Interface
    * Text
    * Networking
    * Multiprocessing

  11. Great! by JoshuaDFranklin · · Score: 4, Funny
    Soon we will be able to use Cygwin on MacOSX!

    Well, as long as those lazy open-source developers hurry up and follow the guidelines.

  12. A little draconian, no? by mbogosian · · Score: 4, Funny

    From the guide: You will use Interface Builder to translate your application's visual appearance into the visual appearance of a well-designed Mac OS X application.

    You don't need to see his interface specification. These aren't the design elements you're looking for. He can go about his development.

  13. 3D Graphics Information is pretty thin by tc · · Score: 3, Insightful

    To summarise, it basically says: "We support OpenGL, so if your app uses OpenGL, you'll have no problem". It then goes on to list a few things about OpenGL, which a seasoned OpenGL developer would already know.

    At no point does it say what you should do if your Windows app is written using Direct3D. Not even a link to a D3D-to-GL porting guide.

    Regardless of the relative merits of the two APIs, it's an undeniable fact that many 3D Windows apps use Direct3D, and it therefore seems like a pretty huge oversight for Apple to not even mention how one might go about porting them.

  14. something that only . . . . . by kraksmoka · · Score: 3, Interesting
    a /.'er livin in a hole might say: It looks like Apple is getting a bit more aggressive toward Microsoft.

    didn't you see the switchers campaign????? isn't that just a bit aggressive?

    lemme guess, you've been wearing that Ellen Fiess t-shirt this whole time, and couldn't remember why or what the ad was about?????????

    --
    "You never want a serious crisis to go to waste." - Rahm Emanuel
  15. all you need to know for porting Win32 to OS X by g4dget · · Score: 3, Informative

    All you need to know is wxWindows. The wxWindows library is quite similar in terms of design and functionality to Win32, and once you have ported to it, you can compile your application for Win32, Linux/X11, OS X, and several other platforms.

  16. What's a floppy? by kitzilla · · Score: 4, Funny

    Ask your wife.

    Okay, I'm sorry. But you did post AC, after all. ;-)

    --
    This is my post. There are many others like it. If you don't like what you read here, go try one of the others.
  17. Re:Step 2 uncovered! by bnenning · · Score: 3, Informative
    On the off chance this isn't a troll:


    And the fact that Macintosh is built around that model is going to hurt it badly.


    How on earth is the Mac "built around that model"? That makes no sense at all considering Apple gives away their high-quality IDE and actively supports open source. Perhaps you mean that Mac developers haven't traditionally been involved in open source; this is true but rapidly changing.


    My parents were asking me: why can't we just run all those Linux games? Well, sorry, they don't run on OS X.


    They probably would if you installed Fink. There are dozens of Gnome and KDE games available as Fink packages, and others can be built easily.


    And even after you track stuff down, installing it on OS X is confusing for the average user: drag this here, drag that there, click here to let me do this, click there to let me do that, etc.


    Once again I have no idea what you're talking about. To install: drag app to "Applications" folder. To uninstall: drag app to trash.


    Microsoft has lots of influence on Apple, and Apple won't be able to get out of DRM


    I see no evidence for either of these assertions.

    --
    How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.