Выравнивание VTable (фактически, всей системы VTable) полностью зависит от реализации.Вы должны использовать тот же компилятор, скомпилированный с теми же параметрами / настройками, чтобы иметь работоспособную программу после компоновки.
По этой причине вы не можете связать сгенерированные msvc двоичные файлы с MinGW.Даже если у вас есть таблицы для выравнивания одинаково, алгоритмы искажения имен различны, и никто не говорит, что два компилятора выбрали бы один и тот же порядок для отдельных функций в самой vtable.
Если вам нужен переносимыйинтерфейс между двумя компиляторами, то вы должны сделать это с интерфейсом C (технически extern "C"
), который имеет стандартизированный ABI.