dll程序怎么打開 用什么打開dll文件程序



文章插圖
dll程序怎么打開 用什么打開dll文件程序

文章插圖
Python 項目中有時會兼顧執行效率和功能隱藏的需求,調用dll是個很好的選擇 。本文介紹一下Python調用dll的方法,供大家參考 。
開發工具:Visual Studio 2017,Pycharm
開發框架:C++ dll開發用MFC;Pycharm python項目
本文主要內容:
C++編寫dll的主要功能實現;python 調用dll的實現方法;Python調用dll方法的總結 。1.C++編寫dll接口
step1 創建MFC 動態鏈接庫 應用程序
創建MFC 動態鏈接庫 應用程序
step2 查看工程結構并編譯生成dll 文件
查看工程結構并編譯生成dll 文件
step3 添加接口函數并編譯生成dll
添加接口函數,在CPP 文件中添加接口,形式如下,extern “C” __declspec(dllexport) +返回類型 +接口函數名稱+(參數1,參數2 …)
//帶參數和返回值的接口extern"C" __declspec(dllexport) int Add(int a, int b){return a + b;}//帶參數的接口extern"C" __declspec(dllexport) void ShowTips(char* tips){AfxMessageBox(tips);}//對話框接口函數調用extern"C" __declspec(dllexport) void TestDialog(char* tips){AFX_MANAGE_STATE(AfxGetStaticModuleState());CDialogA* dlg = new CDialogA(NULL, tips);dlg->DoModal();}更多C++創建dll的方法可參考前面總結的C# 調用dll接口功能實現
2.python 調用dll2.1加載DLL
dllPath = "./DllTest.dll"pDll=ctypes.WinDLL(dllPath)print (pDll)
加載DLL
2.2 調用帶參數和返回值的接口
調用Add接口
2.3 調用帶字符串參數的接口
#C++ 接口 原型:extern"C" __declspec(dllexport) void ShowTips(char* tips)shpwtips = pDll.ShowTips#設置輸入參數類型shpwtips.argtypes = [ctypes.POINTER(ctypes.c_char)]#傳參 字符串需要轉換STR1 = (ctypes.c_char * 256)(*bytes("hello python call dll!", 'MBCS'))#調用函數shpwtips(STR1)
調用帶字符串參數的接口
2.4 調用對話框接口并傳參
#3 調用對話框接口#extern"C" __declspec(dllexport) void TestDialog(char* tips)shpwdialog = pDll.TestDialog#設置輸入參數類型shpwdialog.argtypes = [ctypes.POINTER(ctypes.c_char)]#傳參STR1 = (ctypes.c_char * 256)(*bytes("hello python call dll dialog!", 'MBCS'))#調用函數shpwdialog(STR1)
調用對話框接口并傳參
傳入參數
調用顯示dll對話框
3.總結
【dll程序怎么打開 用什么打開dll文件程序】本文總結了Python調用dll的最基本的實現方法,僅供參考 ??偨Y一下本文的要點:
1)實現Python 調用帶參數和返回值的接口
2)實現Python調用帶參數不帶返回值的接口
3)實現Python調用帶參數的 對話框接口
4)功能實現需要在類接口中完成,python只負責調用,不負責實現;
5)接口函數如果帶參數,需要設置argtypes 類型,參數個數和類型與實際值保持一致(shpwtips.argtypes = [ctypes.POINTER(ctypes.c_char)]]);
6)調用接口之前,字符串參數本身也需要進行轉換(STR1 = (ctypes.c_char * 256)(*bytes(“hello python call dll dialog!”, ‘MBCS’))))
7)編碼方式,如果C++ dll 是多字節 編碼的,用’MBCS’ ;如果是unicode 編碼的,用’utf-8′
更多擴展內容待總結 。