Wasted Neurons Wednesday - CTL3DV2.DLL and DLL hell

In the beginning, Windows was remarkably flat.
Visually, that is.
It was hard to tell what could or couldn't be clicked on, as the screen lacked visual clues to help guide you. This was a particular problem for buttons, toolbars and other controls.
(I could insert a snarky comment here about repeating the mistakes of history...)

Then came CTL3DV2.DLL.
It changed everything.

Windows 3.0 was the first version to get some real 3D going, and Windows 3.1 continued the trend.

But there was a problem.
And that problem was that the library which produced many of the 3D controls - CTL3DV2.DLL - had gone through quite a few versions.

Everyone wanted 3D controls. So all programmers and companies used CTL3DV2.DLL. But in a time before the internet, a program was transferred by floppy disk - and that floppy disk could be two or three years out of date by the time someone installed the program.
And there were no real standard install programs back then - it was early days yet. Most installers simply copied mindlessly, rather than checking file versions and behaving themselves. This simply made the problem much worse...

So CTL3DV2.DLL was continually being overwritten with old versions. Which would usually be unnoticed until you ran a program that needed the later version. At which point that program would complain and fail to run (if you were lucky) or crash (if you were less lucky).

Funnily enough, this sucked.
And weirdly enough, despite being a huge problem for Windows 3.0 - released in 1990 - it wasn’t actually fixed until Windows Vista - released 2007.

And it was a problem. A big enough problem that I remember computer magazines putting CTL3DV2.DLL on their coverdisks regularly, so that you’d always have an up-to-date copy handy. And these were 720Kb/1.44Mb floppies, so space was precious back then - that’s how big a problem it was!

The worst of it was when you had two programs, both of which had diligent programmers - and both of which insisted on a specific, different version.

But sometimes you’d get lucky there - Windows had a specific search order for loading a DLL that didn’t specify a path, and that order was “the directory the application is in, followed by the Windows system directory, followed by the path”.
So you could, sometimes, copy the required DLL version into the application’s directory, and it would magically work.
(Until it found some other reason to break. And as this was Windows 3.x, that usually didn’t take long...)

This is an odd subject, because it touches on so many wasted neurons. The changes to GUIs over the years. The woefully inadequate protections to system files that earlier versions of Windows offered. The lack of forward planning in the Windows architecture. Early installers, some of which were shockingly bad...
DLL Hell was a real place. I’ve seen it. Lived there. Been damned there.
The sad part is... we got so used to it!