91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python3使用ctypes在windows中訪問C和C++動態鏈接庫函數示例

發布時間:2020-07-10 15:58:10 來源:網絡 閱讀:997 作者:夏曹俊 欄目:編程語言

python3使用ctypes在windows中訪問C和C++動態鏈接庫函數示例
這是我們的第一個示例,我們盡量簡單,不傳參,不返回,不訪問其他的動態鏈接庫
一 測試環境介紹和準備
測試環境:
操作系統:windows10
Python版本:3.7.0
VS版本:vs2015社區版(免費)
相關工具下載:
VS版本vs2015社區版(免費)
Python3.7.0 (源碼和安裝文件)
http://ffmpeg.club/python
二 C/C++部分代碼
1 首先完成C/C++的動態鏈接庫,與做python擴展庫不同,ctypes調用的c++庫其實與python沒有代碼關聯,只是提供了開放公共標準。

2 創建VS的win32項目,選擇DLL庫的空項目,也可以選擇導出符號,他會幫你把動態庫的一些宏做好。
python3使用ctypes在windows中訪問C和C++動態鏈接庫函數示例
3 創建testctypes.cpp代碼
python3使用ctypes在windows中訪問C和C++動態鏈接庫函數示例
其中extern "C"表示將此函數編譯為c語言函數,如果你源碼是.c也就是用c語言編譯則不需要加extern "C"。
__declspec(dllexport) 是windows中特有的導出庫函數,如果沒有這個庫函數是訪問不到的,如果做跨平臺到linux中可以通過宏語法把它去掉。

4 將dll文件導出設置到當前項目路徑,并完成編譯
python3使用ctypes在windows中訪問C和C++動態鏈接庫函數示例
我們編譯出win32的debug庫,注意位數不能錯,如果是python是64位的也編譯64位的庫
python3使用ctypes在windows中訪問C和C++動態鏈接庫函數示例

三 Python部分的代碼
from ctypes import
lib = CDLL("testctypes") #可以加路徑
lib.CFunction()
python3使用ctypes在windows中訪問C和C++動態鏈接庫函數示例
from ctypes import
導入ctypes庫所有類和函數
CDLL("testctype")加載具體的動態鏈接庫文件,可以加入路徑比如 dll/testctype ,在windows中省略動態庫的后綴名dll,python會找testctype.dll的文件。注意dll文件可以放在python執行的路徑下,也可以放到系統路徑或者path環境變量所設置的路徑。
lib.CFunction() 加載動態鏈接庫中的CFunction函數,注意雖然我們用c++來做擴展庫,python本身也做了很多支持c++的代碼,但ctypes訪問函數只支持C語言函數,C++函數因為有重載函數名不確定,所以無法訪問。
運行測試結果
python3使用ctypes在windows中訪問C和C++動態鏈接庫函數示例
測試成功,第一步我們完成,下一篇文章再開始來添加參數和返回值

相關課程視頻可以觀看
python3使用ctypes在windows中訪問C和C++動態鏈接庫函數示例
http://edu.51cto.com/course/15278.html

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石家庄市| 防城港市| 临湘市| 和田县| 衢州市| 临邑县| 文登市| 牙克石市| 土默特右旗| 廉江市| 张家界市| 荔浦县| 阿拉善左旗| 伊川县| 安岳县| 娄烦县| 镇平县| 雷波县| 甘南县| 东明县| 临夏市| 崇文区| 望奎县| 三亚市| 通辽市| 托克托县| 北安市| 潍坊市| 胶南市| 济阳县| 庆元县| 长治县| 博客| 察隅县| 汕头市| 灵璧县| 平遥县| 同德县| 陆川县| 元朗区| 阜新市|