Moving to a newer build environment

Project Page Next project post Post History

In the past few days, I've come up against some barriers that made me think about updating my build environment. Previously, I had been using Visual Studio 2010 (VS2010) to make my software with. It wasn't without it's issues, but generally speaking, it's been pretty good to me up until now.

But, I'm finding the need for some image-library help, so that I don't have to code my own image handling stuff. I came across an open source library which seems to be quite popular, called ImageMagicK, which has a C++ version. The downside is, it's a big library.

I tried building it for VS2010 but I can't seem to make the library files build for this vintage of Visual Studio anymore. Hence the idea to try and upgrade the entire environment.

I started by updating to Visual Studio 2022 (VS2022), which at the time of posting, is the latest version. Everything seemed to install easily, but did need some extra downloads to add some further functionality that I need.

I can now successfully build older versions of Cinema4D plugins with the latest VS2022. That's a start. The image library however, is another matter.

I'm looking for an image library because the Cinema4D SDK just isn't up to the task for what I need it to do. So I'm trying to find an alternate solution that can do some work for me. I'll still need Cinema4D's image objects from time to time, but the image library mentioned above would give me more functionality and power. To be fair to Cinema4D, it's not an image editing program, so I wouldn't expect it to have all the bells and whistles I need.

But the image library turned out to be a real headache to get to work. I tried all sorts of library builds for static library linking, and just couldn't get anything working. Small rant: I can't stand how they've made linking libraries such a frustrating experience. Wish the programming industry would find a better solution that's portable to different build platforms without having to recompile the libraries specifically for that platform again. Sigh.

It took me two days (yes, two full days) to get the project to build with the ImageMagicK library. I had to rebuild the library several times. And linking the library to the project was an absolute pain. Because, as I discovered, not all library files were built when I went through the ImageMagicK installation process. This is not an issue with the ImageMagicK download, but conveniently a VS2022 setting that turned some warnings into errors. This meant some key library files weren't built. I didn't realise this of course, until a few days into it. Definitely no smooth sailing.

Once I was able to build my project without errors, I then had the worry that Cinema4D might not read the new plugin file because it's programmed with more modern code architecture. I'm pleasantly surprised to say that it doesn't seem to be an issue (at the moment). And I'm glad it works, because now my software uses the latest C++ version, is built using modern library builds and is using an image library that I don't have to code myself! A big win all round.

I do have some more updates coming for Hyperion soon. Part of this post is a reflection (pun intended) of the needs and what's happening in that project.

As a sign-off, here's the latest render engine result, with some data issue fixes (smaller resolution than normal):

Hyperion dragon render (2000 passes): 1 hour, 59 minutes and 0.457 seconds