Сначала, конечно, убедитесь, что вы компилируете с опцией «Оптимизировать по размеру».Если вы сделаете это, я бы не ожидал, что встраивание, по крайней мере, внесет значительный вклад в размер кода.Компилятор делает компромисс для каждого встраиваемого кандидата в отношении того, насколько (если вообще) он увеличит размер кода по сравнению с повышением производительности, которое он даст.И если вы оптимизируете по размеру, компилятор не рискует сильно раздуть код.(Обратите внимание, что встраивание очень маленьких функций может на самом деле уменьшить размер кода)
Во-вторых, рассматривали ли вы Unity builds ?Это полностью исключило бы компоновщик, и только с одним модулем перевода было бы гораздо меньше дублирующейся работы и, надеюсь, меньше занимаемой памяти.
Наконец, я знаю Visual Studio (или, возможно, WindowsSDK) имеет 64-битный компилятор (то есть компилятор, который сам является 64-битным приложением, а не просто компилятором, создающим 64-битный код).Подумайте об этом.(Я не знаю, есть ли также 64-битный компоновщик)
Я не знаю, компоновщик создан с установленным флагом LARGEADDRESSAWARE.Если это так, то запуск его на 64-разрядной машине позволит процессу использовать 4 ГБ памяти вместо 2 ГБ, которые он обычно получает.(при необходимости вы можете добавить флаг самостоятельно, изменив заголовок PE)
Возможно, также может помочь ограничение связи различных символов.Если вы знаете, что символ не требуется за пределами текущего модуля перевода, поместите его в анонимное пространство имен.Это может позволить компилятору обрезать неиспользуемые символы перед передачей всего компоновщику