На самом деле, вы можете! (только не с ctypes) https://cppyy.readthedocs.io/en/latest/
НО, чтобы достигнуть этого, он фактически встраивает интерпретатор C ++ для небольшого выигрыша в производительности.
Одна из причин, по которой C ++ не имеет официального ABI, заключается в том, что компиляторы настолько сфокусированы на производительности, что для оптимизации необходимо пересечь границы функций и классов. С разными настройками вы можете получить разные интерфейсы, даже если у него одинаковый ABI. Хорошим примером является оптимизация возвращаемого значения (RVO), которая изменяет сигнатуры функций, чтобы избежать копирования больших структур.
Другая причина в том, что C ++ является супермета, и большинство современных функций зависят от шаблонов, которые генерируют код и перекомпилируют его. Таким образом, вы будете работать только с подмножеством того, что делает C ++ хорошим для программирования.