Python:使用ctypes访问DLL函数-通过函数* name *访问失败

myPythonClient(下图)想要调用一个ringBell函数(使用DLL从DLL中加载ctypes)。但是,尝试ringBell通过其名称访问将导致AttributeError。为什么?

学习python中有什么不懂的地方,小编这里推荐加小编的python学习群:895,817, 687
有任何不懂的都可以在里面交流,还有很好的视频教程pdf学习资料,大家一起学习交流!

RingBell.h 包含

namespace MyNamespace
    {
     
    class MyClass
        {
     
        public:
            static __declspec(dllexport) int ringBell ( void ) ;
        } ;
    }

RingBell.cpp 包含

#include 
#include "RingBell.h"
namespace MyNamespace
    {
     
    int __cdecl MyClass::ringBell ( void )
        {
     
        std::cout << "\a" ;
        return 0 ;
        }
    }

myPythonClient.py 包含

from ctypes import *
cdll.RingBell[1]() # this invocation works fine
cdll.RingBell.ringBell() # however, this invocation errors out
# AttributeError: function 'ringBell' not found

解决方案

也许是因为C ++名称是由编译器破坏的,而不是从DLL导出为的RingBell。您是否检查过它在导出的名称中是否完全一样?

你可能感兴趣的:(Python,python,程序员)