Recently i continued my experiments about using newer C++ toolsets for the dll. Surprisingly using the latest versions of the msvc compiler or clang to compile the dll works after fixing up C++ standard compatibility problems in the code. This also runs pretty stable at runtime unless there are bugs in the code that the older compiler didn't notice.
I took it further and looked into also updating the c++ runtime because this would enable using everything C++23 has to offer. This is more complicated but can be done the only remaining issues i have are caused by the python binding. Firaxis modified the boost python source code so switching the boost python dll isn't possible at the moment.
To make the runtime change work it's necessary to use a modified msvcr71.dll and to use a modified version of the latest microsoft c++ stl. This requires anyone who wants to play a mod using this setup to modify their civilization Installation by copying and replacing dlls.
Is that something that's a showstopper or would the benefits of using a up to date c++ toolset justify having such a requirement?
I took it further and looked into also updating the c++ runtime because this would enable using everything C++23 has to offer. This is more complicated but can be done the only remaining issues i have are caused by the python binding. Firaxis modified the boost python source code so switching the boost python dll isn't possible at the moment.
To make the runtime change work it's necessary to use a modified msvcr71.dll and to use a modified version of the latest microsoft c++ stl. This requires anyone who wants to play a mod using this setup to modify their civilization Installation by copying and replacing dlls.
Is that something that's a showstopper or would the benefits of using a up to date c++ toolset justify having such a requirement?