Как использовать ctypes, c++ и python?
extern "C" надо перед функциями писать, чтоб компилятор в dll-ке называл их по C-шному, а не по C++-ному
Смотри. С - не поддерживает перегрузку функция, по этому в с не бывает двух функций с одним именем и разными аргументами, по этому компилятор сохраняет их имена как есть (ну почти, но всегда одинаково). С другой стороны С++ поддерживает перегрузку, но что бы можно было однозначно определить по какому адресу вызывается функция ее имя декорируется, новое имя зависит от типов аргументов и если это метод класса, то еще и имени класса и возможно его шаблонных параметров, и плюсом сюда еще идет, то что каждый компилятор делает это по своему, по этому нет нормального способа, найти функцию по имени в dll скомпилированной с++ компилятором. Но есть способ сказать компилятору, что бы он не декорировал имена функция - это extern "C". Тогда компилятор оставит сишные имена у функций.