Last Updated:

Running Rhapsody on Apple Silicon

Andy Lapping Tip

Now don't get too excited - this post isnt about running Rhapsody directly on a Mac but more anecdotal (Your Mileage May Vary!) of a recent experience of running Rhapsody inside Parallels on a Mac - specifically one of the newer machines that uses Apple silicon instead of Intel. 

I experienced quite a few crashes when using the Rhapsody API but they were for the most part non-deterministic. After enabling windows crash dumps I was finally able to track down the cause. 

You may be using another virtualization engine but will likely experience the same issues baecause the root cause isn't the Virtual Machine but the ARM64 version of windows thats running on it. Windows runs x64 apps on ARM64 using a compatibility layer called WOW64 that (amongst other things) redirects system calls. Because Rhapsody is not a native ARM64 application, its running on a hybrid mixed ARM64EC/AMD64 process.

When vc_redist64.exe runs (that is the Microsoft redistributable libararies that Rhapsody requires) on ARM Windows it installs the ARM64EC flavoured mfc140.dll into System32 instead of the pure x64 version. Rhapsody then loads the wrong flavour and some processes are not initialised correctly - resulting in Rhapsody crashes. Its indeterminate becauser the intialization is affected by threading and timing differences. 

The fix (at least for me) was a simple one - install Rhapsody on an Intel machine and then copy the following dlls from that machine (from the Windows System32 folder) into the Rhapsody folder on Parallels. Windows DLL search order will prefer the local copy over System32 - and hey presto - far fewer Rhapsody crashes.

  • mfc140.dll
  • mfc140u.dll
  • mfcm140.dll
  • mfcm140u.dll