Python: accessing DLL function using ctypes -- access by function *name* fails
attributeerror, ctypes, dll, python
Solution
Perhaps because the C++ name is mangled by the compiler and not exported from the DLL as `RingBell`. Have you checked that it appears in the exported names exactly like that?
Problem
`myPythonClient` (below) wants to invoke a `ringBell` function (loaded from a DLL using `ctypes`). However, attempting to access `ringBell` via its name results in an `AttributeError`. Why? `RingBell.h` contains ``` namespace MyNamespace { class MyClass { public: static __declspec(dllexport) int ringBell ( void ) ; } ; } ``` `RingBell.cpp` contains ``` #include <iostream> #include "RingBell.h" namespace MyNamespace { int __cdecl MyClass::ringBell ( void ) { std::cout << "\a" ; return 0 ; } } ``` `myPythonClient.py` contains ``` from ctypes import * cdll.RingBell[1]() # this invocation works fine cdll.RingBell.ringBell() # however, this invocation errors out # AttributeError: function 'ringBell' not found ```