欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python?使用ctypes調(diào)用C/C++?dll詳情

 更新時(shí)間:2022年04月29日 10:32:38   作者:我來喬23  
這篇文章主要介紹了python?使用ctypes調(diào)用C/C++?dll詳情,文章首先通過導(dǎo)入ctypes模塊,加載C/C++?dll到python進(jìn)程空間展開主題相關(guān)內(nèi)容,需要的小伙伴可以參考一下

python和C/C++混合編程,推薦使用python的內(nèi)置模塊ctypes,從名字上可以看出是c,可見對C++的支持并不太好。

一般的步驟:

  • 1、導(dǎo)入ctypes模塊,加載C/C++ dll到python進(jìn)程空間
  • 2、python類型轉(zhuǎn)換為ctypes類型
  • 3、ctypes類型轉(zhuǎn)換為C/C++類型

ctypes文檔

VS2017 + Python3.8(IDE:py Charm)

基本數(shù)據(jù)類型以及結(jié)構(gòu)體類型都可以正常通信。
DLL:

extern "C"{

struct MyStruct{
int num_int;
long num_long;
float num_float;
double num_double;
char* num_str;
};

int __declspec(dllexport) print(MyStruct my)
printf("%d\n", my.num_int);
printf("%d\n", my.num_long);
printf("%f\n", my.num_float);
printf("%f\n", my.num_double);
printf("%s\n", my.num_str);
}

PYTHON:

import ctypes

class MyStruct(Structure):
_fields_ = [
("num_int", c_int),
("num_long", c_long),
("num_float", c_float),
("num_double", c_double),
("num_str", c_char_p)
]

# dll全路徑,依賴完整
dll = ctypes.WinDLL("C:\\work\\mytest.dll")

#調(diào)用
my = MyStruct();
my.num_int = 23
my.num_long = 1024
my.num_float = 3.14
my.num_double = 3.141592653
my.num_str = b"hello world"
dll.print(my)

如果結(jié)構(gòu)體嵌套,也是可以成功傳輸?shù)?,但是在?xiàng)目很大時(shí)可能會(huì)遇到大結(jié)構(gòu)體通信數(shù)據(jù)錯(cuò)誤,如char*傳到C/C++端為無效的字符。
建議,將結(jié)構(gòu)體按照先簡單和復(fù)雜的順序排列成員。
參考官方文檔為python和C/C++中的結(jié)構(gòu)體定義字節(jié)對齊。

如:

<strong>#pragma pack(4)</strong>
struct MyStruct{
int num_int;
long num_long;
float num_float;
double num_double;
char* num_str;
};
class MyStruct(Structure):
<strong>_pack_ </strong><strong>= 4</strong>
_fields_ = [
("num_int", c_int),
("num_long", c_long),
("num_float", c_float),
("num_double", c_double),
("num_str", c_char_p)
]

到此這篇關(guān)于python 使用ctypes調(diào)用C/C++ dll詳情的文章就介紹到這了,更多相關(guān)python調(diào)用C++ dll內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python爬取網(wǎng)頁版QQ空間,生成各類圖表

    python爬取網(wǎng)頁版QQ空間,生成各類圖表

    最近python課程學(xué)完了,琢磨著用python點(diǎn)什么東西,經(jīng)過一番搜索,盯上了QQ空間,本文主要講述了如何爬取網(wǎng)頁版QQ空間,并生成詞云圖、柱狀圖、折線圖、餅圖的各種示例代碼
    2021-06-06
  • django使用html模板減少代碼代碼解析

    django使用html模板減少代碼代碼解析

    這篇文章主要介紹了django使用html模板減少代碼代碼解析,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • python中的queue隊(duì)列類型及函數(shù)用法

    python中的queue隊(duì)列類型及函數(shù)用法

    這篇文章主要介紹了python中的queue隊(duì)列類型及函數(shù)用法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 基于Python OpenCV實(shí)現(xiàn)圖像的覆蓋

    基于Python OpenCV實(shí)現(xiàn)圖像的覆蓋

    本文將基于Python、OpenCV和Numpy實(shí)現(xiàn)圖像的覆蓋,即小圖像覆蓋在大圖像上。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-02-02
  • Python用requests模塊實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁爬蟲

    Python用requests模塊實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁爬蟲

    大家好,本篇文章主要講的是Python用requests模塊實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁爬蟲,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Python實(shí)現(xiàn)簡單查找最長子串功能示例

    Python實(shí)現(xiàn)簡單查找最長子串功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)簡單查找最長子串功能,涉及字符串遍歷、統(tǒng)計(jì)等相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • Python連接Mysql實(shí)現(xiàn)圖書借閱系統(tǒng)

    Python連接Mysql實(shí)現(xiàn)圖書借閱系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Python連接Mysql實(shí)現(xiàn)圖書借閱系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Python高級文件操作之shutil庫詳解

    Python高級文件操作之shutil庫詳解

    這篇文章主要介紹了Python高級文件操作之shutil庫詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有很大的幫助,需要的朋友可以參考下
    2021-05-05
  • python樹的同構(gòu)學(xué)習(xí)筆記

    python樹的同構(gòu)學(xué)習(xí)筆記

    在本篇文章里小編給大家整理的是一篇關(guān)于python樹的同構(gòu)學(xué)習(xí)筆記以及相關(guān)實(shí)例代碼內(nèi)容,有需要的朋友們學(xué)習(xí)下。
    2019-09-09
  • Python操作word文檔插入圖片和表格的實(shí)例演示

    Python操作word文檔插入圖片和表格的實(shí)例演示

    這篇文章主要給大家介紹了關(guān)于Python操作word文檔插入圖片和表格的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評論