Почему мы до сих пор не можем использовать ctypes для вызова C ++ из Python в 2019 году? - PullRequest
0 голосов
/ 30 октября 2019

Это все еще беспокоит меня. В конце концов, C также не имеет полностью стандартизированного ABI, но работает с ctypes. Почему то же самое не может быть достигнуто для C ++?

Я нашел это сообщение в блоге , в котором утверждается, что проблема скорее политическая, чем техническая, но написана 12 лет назад. Является ли это утверждение еще точным сегодня?

1 Ответ

0 голосов
/ 30 октября 2019

На самом деле, вы можете! (только не с ctypes) https://cppyy.readthedocs.io/en/latest/

НО, чтобы достигнуть этого, он фактически встраивает интерпретатор C ++ для небольшого выигрыша в производительности.

Одна из причин, по которой C ++ не имеет официального ABI, заключается в том, что компиляторы настолько сфокусированы на производительности, что для оптимизации необходимо пересечь границы функций и классов. С разными настройками вы можете получить разные интерфейсы, даже если у него одинаковый ABI. Хорошим примером является оптимизация возвращаемого значения (RVO), которая изменяет сигнатуры функций, чтобы избежать копирования больших структур.

Другая причина в том, что C ++ является супермета, и большинство современных функций зависят от шаблонов, которые генерируют код и перекомпилируют его. Таким образом, вы будете работать только с подмножеством того, что делает C ++ хорошим для программирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...