There are actually not that many calls over the DLL boundaries that are problematic. Main issue are the few ones that use vectors or pass CvString and similar or return it. It seems like several of the programmers at Firaxis were aware of the issues of passing STL classes over DLL boundaries and some were not. The calls into and from the DLL are not that performance relevant in general because the AI turns happen nearly entirely in the DLL. In regards to Python: The calls from Python to the DLL do not touch the exe at all but currently they do go over a Boost Python DLL. In my tests I bypassed that by linking a new version of Boost Python statically which then directly communicates with the Python24.dll.