最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

一般的步驟:

  • 1、導入ctypes模塊,加載C/C++ dll到python進程空間
  • 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ù)?,但是在項目很大時可能會遇到大結(jié)構(gòu)體通信數(shù)據(jù)錯誤,如char*傳到C/C++端為無效的字符。
建議,將結(jié)構(gòu)體按照先簡單和復雜的順序排列成員。
參考官方文檔為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中tqdm的使用和例子

    Python中tqdm的使用和例子

    Tqdm是一個快速,可擴展的Python進度條,可以在 Python 長循環(huán)中添加一個進度提示信息,用戶只需要封裝任意的迭代器tqdm(iterator),下面這篇文章主要給大家介紹了關(guān)于Python中tqdm的使用和例子的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Python溫度轉(zhuǎn)換實例分析

    Python溫度轉(zhuǎn)換實例分析

    這篇文章主要介紹了Python溫度轉(zhuǎn)換實例分析,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • PyTorch使用教程中的torch包詳解

    PyTorch使用教程中的torch包詳解

    文章介紹了PyTorch框架中torch包的基礎(chǔ)組件,包括張量的創(chuàng)建和基本操作、張量的保存和加載、隨機數(shù)生成以及張量的基礎(chǔ)數(shù)學運算,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • python 求一個列表中所有元素的乘積實例

    python 求一個列表中所有元素的乘積實例

    今天小編就為大家分享一篇python 求一個列表中所有元素的乘積實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python文件路徑讀取實例代碼詳解

    Python文件路徑讀取實例代碼詳解

    這篇文章主要介紹了在Python中處理文件路徑的方法,包括普通字符串、原始字符串、正斜杠的使用以及`os.path`模塊的應用,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-03-03
  • Django框架的使用教程路由請求響應的方法

    Django框架的使用教程路由請求響應的方法

    這篇文章主要介紹了Django框架的使用教程路由請求響應的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • python OpenCV GrabCut使用實例解析

    python OpenCV GrabCut使用實例解析

    這篇文章主要介紹了python OpenCV GrabCut使用實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • 最新整理Python中的type和object的示例詳解

    最新整理Python中的type和object的示例詳解

    這篇文章主要介紹了最新整理Python中的type和object的示例詳解,最主要,是理解type和object的區(qū)別與聯(lián)系,本文結(jié)合示例代碼給大家講解的非常詳細,需要的朋友可以參考下
    2022-12-12
  • 如何運用sklearn做邏輯回歸預測

    如何運用sklearn做邏輯回歸預測

    這篇文章主要介紹了如何運用sklearn做邏輯回歸預測問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Django接收post前端返回的json格式數(shù)據(jù)代碼實現(xiàn)

    Django接收post前端返回的json格式數(shù)據(jù)代碼實現(xiàn)

    這篇文章主要介紹了Django接收post前端返回的json格式數(shù)據(jù)代碼實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07

最新評論

顺平县| 江源县| 思南县| 随州市| 渭源县| 安图县| 桂平市| 湖南省| 吉安市| 南丰县| 鱼台县| 红安县| 宁津县| 方正县| 金秀| 沙田区| 徐汇区| 河西区| 蓬溪县| 昭通市| 郧西县| 仙游县| 石楼县| 乌鲁木齐县| 和田市| 深水埗区| 布尔津县| 隆子县| 雷州市| 乌拉特后旗| 台湾省| 叙永县| 南宫市| 安义县| 班玛县| 清新县| 奈曼旗| 电白县| 正定县| 江阴市| 霍邱县|