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."

13 of 285 comments (clear)

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

    Why yes there is....

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

  2. 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.

  3. Useless by jon_c · · Score: 2, Informative

    Wow that's a pretty short guide. I think it came be summarized as:

    "Welcome to OSX, based on unix, which means you get protected memory, threads and other stuff. This is new to Macs, which is why we're even bothering to mention it.

    Their are a poop-load of different ways to develop for the Mac; Cocoa, Carbon, Java, Classic and even old school bsd/posix, but since Carbon is the only one that resembles Win32 we will talk about that one.

    I'm going to mention that Win32 message are a lot like the old school messages, doesn't this make it easy?, oh and we have some type of form/resource editor n' stuff.

    Now to read more here are some other articles you'll absolutely need to read before you can anything... you know what.. Why don't you just come to the developer conference: Worldwide Developers Conference sessions on Mac OS X (available for purchase)

    -Jon

    --
    this is my sig.
    1. 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

  4. 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 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.
    3. 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."
  5. Re:Panic in the streets of Redmond! by Anonymous Coward · · Score: 1, Informative

    uh, apple has like 4% of NEW SALES.. since Macs tend to last for many years (I bought a mac in 1996, then another in 2000, I'm still using that one) the actual number of Macs is larger.

  6. Re:MFC?? by Anonymous Coward · · Score: 1, Informative

    This isn't as bad as you think. I've worked with MFC, ATL, WTL, and Borland's VCL in both Pascal and C++, and I'm finding Cocoa to be elegant in comparison. Admittedly the []; syntax gives me fits at times, but the overall depth and breadth of the Cocoa environment is a nice thing.

    Funny, but the thing I miss the most about Windows? code completion. the silly little popups for function params are a huge timesaver, and Project Builder doesn't sport them yet.

  7. 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.

  8. Re:Documentation Overdue by apuku · · Score: 2, Informative

    "Mac OS X Unleashed" by John Ray and William C Ray has a lot of good stuff on NetInfo - clustering, NFS mounts, user management, etc.

    --
    Look, it's trying to think - Albert Rosenfield
  9. 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.