Загрузка C ++ dll с Ctypes опасна и имеет некоторые серьезные ограничения.Имя экспортируемой функции не совпадает с объявленным вами, если только вы не объявили функцию в C ++ как 'extern "C"'.Это возможно только для чистых функций, но не для функций-членов.Компилятор C ++ делает то, что называется «искажение имени», см. http://en.wikipedia.org/wiki/Name_mangling#Name_mangling_in_C.2B.2B.
Я предлагаю два решения:
- Вы пишете некоторый код C ++ с чистыми функциями, объявленными как 'extern' C«», который предоставляет необходимую вам функциональность.
- Я действительно рекомендую вам использовать Cython http://cython.org/,, особенно http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html.Я часто его использовал, и для меня это лучший способ обернуть код C ++ в Python.
ДОПОЛНИТЕЛЬНЫЕ ЗАМЕЧАНИЯ:
Я пытался несколько раз повысить Python, но мне было трудноиспользовать.У него есть своя собственная система сборки, которую вы должны изучить, процесс компиляции очень медленный, и из-за синтаксиса шаблона код становится трудным для чтения.Дело в том, что контекст Boost Python очень крутой, но, на мой взгляд, его трудно использовать.
Я также попробовал SIP и SWIG, что мне не очень понравилось.
Я очень рекомендую использовать Cython.