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

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

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

python和C/C++混合編程,推薦使用python的內(nèi)置模塊ctypes,從名字上可以看出是c,可見對(duì)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++端為無(wú)效的字符。
建議,將結(jié)構(gòu)體按照先簡(jiǎn)單和復(fù)雜的順序排列成員。
參考官方文檔為python和C/C++中的結(jié)構(gòu)體定義字節(jié)對(duì)齊。

如:

<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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中tqdm的使用和例子

    Python中tqdm的使用和例子

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

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

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

    PyTorch使用教程中的torch包詳解

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

    python 求一個(gè)列表中所有元素的乘積實(shí)例

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

    Python文件路徑讀取實(shí)例代碼詳解

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

    Django框架的使用教程路由請(qǐng)求響應(yīng)的方法

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

    python OpenCV GrabCut使用實(shí)例解析

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

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

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

    如何運(yùn)用sklearn做邏輯回歸預(yù)測(cè)

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

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

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

最新評(píng)論

临洮县| 泽州县| 焦作市| 凤冈县| 都昌县| 萍乡市| 民乐县| 平南县| 石狮市| 琼中| 静海县| 周口市| 康保县| 虎林市| 化隆| 偃师市| 柏乡县| 汝州市| 赤峰市| 手游| 湖南省| 健康| 枞阳县| 都匀市| 高雄县| 商城县| 旺苍县| 沙田区| 和顺县| 林甸县| 东阿县| 岳阳县| 凭祥市| 晴隆县| 镇巴县| 伊吾县| 安多县| 探索| 镇原县| 边坝县| 揭东县|