myPythonClient(下面)要调用ringBell函数(使用ctypes从DLL加载)。但是,尝试通过其名称访问ringBell会导致AttributeError。为什么?
RingBell.h包含

namespace MyNamespace
    {
    class MyClass
        {
        public:
            static __declspec(dllexport) int ringBell ( void ) ;
        } ;
    }
RingBell.cpp包含
#include <iostream>
#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++名称是由编译器破坏的,而不是作为RingBell从DLL导出的。您是否检查过它在导出的名称中是否完全一样?

关于Python:使用ctypes访问DLL函数-通过函数* name *访问失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1088085/

10-11 20:19