Python:使用ctypes访问DLL函数-通过函数* name *访问失败
生活随笔
收集整理的這篇文章主要介紹了
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 <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 ++名稱是由編譯器破壞的,而不是從DLL導出為的RingBell。您是否檢查過它在導出的名稱中是否完全一樣?
總結
以上是生活随笔為你收集整理的Python:使用ctypes访问DLL函数-通过函数* name *访问失败的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python必备收藏!Pycharm 常
- 下一篇: 问题引发由于与GI相关的python脚本