<strike id="cakm0"></strike>
  • <button id="cakm0"><dl id="cakm0"></dl></button>
  • <samp id="cakm0"><tbody id="cakm0"></tbody></samp>
    <samp id="cakm0"><pre id="cakm0"></pre></samp><ul id="cakm0"></ul>
    <strike id="cakm0"></strike>
    <li id="cakm0"></li>
  • <ul id="cakm0"></ul>
  • 更多精彩內容,歡迎關注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    python調用dll

    文檔

    python調用dll

    python調用dll有兩個方法,一是通過ctypes.windll.LoadLibrary()調用,二是通過ctypes.WinDll()調用。
    推薦度:
    導讀python調用dll有兩個方法,一是通過ctypes.windll.LoadLibrary()調用,二是通過ctypes.WinDll()調用。

    python調用dll怎么操作?一起來看看小編今天的分享吧!

    python調用dll有兩個方法,一是通過ctypes.windll.LoadLibrary()調用,二是通過ctypes.WinDll()調用。

    例如假設我們存在一個test.dll文件:

    extern???"?C?"
    {
    ?
    int??__stdcall?test(??void?*??p,??int??len)
    {
    ??????return??len;
    }
    ?
    }

    方法一:

    import??ctypes
    dll??=??ctypes.windll.LoadLibrary(??'?test.dll?'??)

    方法二:

    import??ctypes
    dll??=??ctypes.WinDll(??'?test.dll?'??)

    其中ctypes.windll為ctypes.WinDll類的一個對象,已經在ctypes模塊中定義好的。在test.dll中有test接口,可直接用dll調用即可。

    nRst??=??dll.test(?)
    print??nRst

    由于在test這個接口中需要傳遞兩個參數,一個是void類型的指針,它指向一個緩沖區,一個是該緩沖區的長度。因此我們要獲取到python中的字符串的指針和長度。

    #方法一:
    sBuf??=???'?aaaaaaaaaabbbbbbbbbbbbbb?'
    pStr??=??ctypes.c_char_p(?)
    pStr.value??=??sBuf
    pVoid??=??ctypes.cast(?pStr,?ctypes.c_void_p?).value
    nRst??=??dll.test(?pVoid,?len(?pStr.value)?)
    #方法二:
    test??=?dll.test
    test.argtypes?=?[ctypes.c_char_p,?ctypes.c_int]
    test.restypes?=?ctypes.c_int
    nRst?=?test(sBuf,?len(sBuf))

    如果修改test.dll中接口的定義如下:

    extern???"?C?"
    {
    ?????int??__cdecl?test(??void?*??p,??int??len)
    ????{
    ?????????return??len;
    ????}
    }

    由于接口中定義的是cdecl格式的調用,所以在python中也需要用相應的類型:

    1?.
    import??ctypes
    dll??=??ctypes.cdll.LoadLibrary(??'?test.dll?'??)
    ##注:一般在linux下為test.o文件,同樣可以使用如下的方法:
    ##?dll?=?ctypes.cdll.LoadLibrary('test.o')
    2?.
    import??ctypes
    dll??=??ctypes.CDll(??'?test.dll?'??)

    以上就是小編今天的分享了,希望可以幫助到大家。

    文檔

    python調用dll

    python調用dll有兩個方法,一是通過ctypes.windll.LoadLibrary()調用,二是通過ctypes.WinDll()調用。
    推薦度:
    為你推薦
    資訊專欄
    熱門視頻
    相關推薦
    java concat js 遍歷json js json對象 js數組遍歷方法 python 引用 idea的maven配置 maven安裝配置 java filereader java stream java random java lambda java hashmap java foreach java final java json java 泛型 python range函數 linux ftp js 字符串轉數字 電腦忘記開機密碼怎么辦 python strip函數 python configparser模塊 oracle coalesce rstudio使用教程 mysql去重復 保留一條 js set方法 python中get函數用法 java get和set方法 object轉bigdecimal object 轉list python 交集 js讀取文件 linux 格式化u盤 deque java java process armoury crate打不開 python skimage vue使用jquery js set去重 python的range函數用法
    Top 少妇伦子伦精品无码STYLES | 精品久久洲久久久久护士免费| 日韩精品无码人成视频手机| 国产乱人伦偷精品视频免| 无码精品黑人一区二区三区| 亚洲人成电影网站国产精品| 99视频全部免费精品全部四虎| 国产亚洲精品a在线观看| 国产精品蜜臂在线观看| 国产精品1区2区3区在线播放| 国产精品看高国产精品不卡| 午夜精品久久久久久影视777| 日本国产成人精品视频| 亚洲国产精品嫩草影院在线观看| 国产日韩精品无码区免费专区国产 | 五月天婷婷精品免费视频| 国产精品福利在线| 精品无码av一区二区三区| 中国精品18videosex性中国| 亚洲AⅤ永久无码精品AA| 欧洲精品一卡2卡三卡4卡乱码| 亚洲精品第一国产综合野| 久久精品国产一区二区三| 国产福利精品视频自拍| 国产精品亚洲一区二区三区| 久久夜色精品国产噜噜亚洲a| 91精品福利在线观看| 人妻熟妇乱又伦精品视频 | 51视频精品全部免费最新| 国产精品自在线拍国产| 久久精品无码专区免费 | 国产精品无码久久综合| 国产精品午夜久久| 亚洲精品tv久久久久| 国产一区二区三区国产精品| 成人h动漫精品一区二区无码| 思思re热免费精品视频66| 国产精品成人va| 亚洲国产成人精品无码一区二区 | 国产午夜精品一区二区三区漫画| 国产精品亚洲不卡一区二区三区|