What's it

IBM SOMobjects 3.0 for WinNT with several unofficial modifications to get it up and running on modern OSes and compilers.

Unofficial version: 3.0.1

Look inside README.IBM.txt for installation notes

Currently only VisualAge C++ 4.0 for Win32 is supported


Long time ago IBM hold no less strong than Microsoft. Microsoft had Windows, IBM had OS/2. Microsoft had COM, IBM had SOM. Microsoft had OLE, IBM had OpenDoc. Microsoft had DCOM based on DCE, IBM had DSOM based on CORBA.

Then something happened to IBM and it deliberately stopped development. Not every of IBM's technologies mentioned might be worth attention, but SOM indeed is.

SOMobjects 3.0 was released in December 1996. Three platforms were supported: OS/2, WinNT, AIX. It was generally available. As times passed by SOM was forgotten as something apart from OS/2. There were bright articles advocating SOM and comparing it with another approaches. Because SOM is still better. Even in 2012 SOM matters. What's wrong with all these articles is that "runnable binaries talk louder than words". Those who were writing all these articles were only dealing with OS/2 version of SOM. For most developers, OS/2 binaries are not runnable. SOM for WinNT was forgotten twice: by WinNT developers and by SOM advocates. The file was lost. It couldn't be found on the Internet and it look hopeless trying to find it. Anyway this story has a happy end: was brought back into existence in December 2012.

Unfortunatelly, the consequence of continuous (16 years) lack of maintenace can be felt. There were no DEP in 1996. VisualAge C++ haven't done its damage by destructive migration to .icc projects. First of all, there are no command line compilers in VAC 4.0 in the usual sence. Second, VAC 4.0 isn't way to go nowadays. SOM needs to be retargetted to other compilers.

Binary patches

3.0.1 somws35i.dll and somwm35i.dll: make SysGetMem always demand PAGE_EXECUTE_READWRITE rights to avoid access violations inside thunks


First of all, thanks to bright heads at IBM:

  • Compiler: Andy Martin
  • Runtime: Larry Raper, Scott Danforth, Mike Conner
  • Bindings: Andy Martin, Larry Raper, Mike Conner
  • C++ Bindings: Scott Danforth, Andy Martin
  • Interface Repository: Larry Raper, Dave Hock
  • Metaclass Framework: Ira R. Forman, Scott Danforth
  • Emitter Framework: Mike Conner, Liane Acker, Andy Martin
  • Other tools: Andy Martin, Liane Acker

Thanks to porter for passing me that precious By the way, he is looking for AIX version.

This unofficial release is maid by Levashew Ivan. You can find my contacts at