樱花草在线播放免费高清观看,国产成人久久综合777777麻豆,啦啦啦在线视频免费观看正在播放1,在线天堂√中文,亚洲色大成网站www永久男同,国产丰满乱子伦无码专区,日韩精品 在线 国产 丝袜 ,三级在线看中文字幕完整版
  • PYTHON調(diào)用C++DLL的參數(shù)傳遞方法

    2019/9/16??????點(diǎn)擊:

    1. PYTHON與C++參數(shù)變量的比較

    2. 準(zhǔn)備一個(gè)C++ DLL的測(cè)試工程文件,并編譯產(chǎn)生DLL文件,代碼如下:
    C++文件(cpp):(注意在函數(shù)聲明上加上extern "C" 的修飾)

    #include “testdll.h”
    extern "C" {
        __declspec(dllexport) int Double(int x);
        __declspec(dllexport) float floatAdd(float a,float b); 
        __declspec(dllexport) void HelloWorld(char * str); 
        __declspec(dllexport) void Ints(int * arr,int n); 
    }
    int Double(int x){
        return x*2;
    }
    float floatAdd(float a,float b) {
        return a+b;
    }
    void HelloWorld(char * str){
        puts(str);
    }

    在python腳本中使用ctypes加載dll :
     from ctypes import *
     dll = cdll.LoadLibrary('DLL/dlltest.dll')
    請(qǐng)注意:


    1.如果不加任何修飾,默認(rèn)傳入?yún)?shù)為int,傳出參數(shù)也為int 

    2.對(duì)于int以外的類(lèi)型(如float),需要聲明python函數(shù)的傳入?yún)?shù)類(lèi)型,傳出參數(shù)類(lèi)型 fun.argtypes=[c_float,c_float]  #定義傳參類(lèi)型
     fun.restype=c_float             #定義返回值類(lèi)型
     a=fun(c_float(1.4),c_float(1.2))
     print(type(a))
     print(a)
     輸出:2.5999999046325684 

    3.對(duì)于字符串char* ,在聲明傳入?yún)?shù)類(lèi)型時(shí),需要聲明為字符指針,然后分配一塊char數(shù)組,后把這個(gè)數(shù)組強(qiáng)制轉(zhuǎn)換為字符指針 并且,在把python腳本中的數(shù)據(jù)結(jié)構(gòu)導(dǎo)入c++中時(shí),需要把str轉(zhuǎn)換為bytes或者bytesarray類(lèi)型,并且進(jìn)行迭代器分解
     hello=dll.HelloWorld
     hello.argtypes=[POINTER(c_char)]    #傳入?yún)?shù)為字符指針
     STR=(c_char * 100)(*bytes("WiseGlove數(shù)據(jù)手套",'utf-8')) #把一組100個(gè)的字符定義為STR
     cast(STR, POINTER(c_char))
     hello(STR)
     輸出:WiseGlove數(shù)據(jù)手套 

    4.對(duì)于其他數(shù)據(jù)類(lèi)型的數(shù)組,(例如int*),操作相似: Ints=dll.Ints
     Ints.argtypes=[POINTER(c_int),c_int]
     INT=(c_int * 100)(*[1,2,3]) #把列表傳入變長(zhǎng)參數(shù)args*中
     cast(INT, POINTER(c_int))
     Ints(INT,c_int(3))
     輸出:1 2 3  

    5.對(duì)于返回值為數(shù)組的情況,可以直接使用索引去訪問(wèn),但是下標(biāo)操作[]不是從迭代器中取對(duì)象,而是地址偏移: def fillHoleCpp(im):
         dll = cdll.LoadLibrary("bfs.dll")
         bfs=dll.bfs
         bfs.argtypes = [POINTER(c_int),c_int]
         bfs.restype = POINTER(c_int)
         a = np.asarray(range(16), dtype=np.int32).reshape([4, 4])
         if not a.flags['C_CONTIGUOUS']:
             a = np.ascontiguous(a, dtype=a.dtype)  # 如果不是C連續(xù)的內(nèi)存,必須強(qiáng)制轉(zhuǎn)換
         IMG = cast(a.ctypes.data, POINTER(c_int))  # 轉(zhuǎn)換為ctypes,這里轉(zhuǎn)換后的可以直接利用cty
         cast(IMG, POINTER(c_int))
         length=a.size
         ans=bfs(IMG,c_int(length))
         print(type(ans))
         for i in range(0,length):
             print(ans[i],end=' ')
    怎么樣, 小伙伴們學(xué)會(huì)了Python語(yǔ)言調(diào)用C++dll的方法了嗎? 使用這個(gè)方法,可以調(diào)用WONGLOVE數(shù)據(jù)手套的sdk開(kāi)發(fā)庫(kù)獲得數(shù)據(jù)手套的角度數(shù)據(jù)哦~~



    主站蜘蛛池模板: 日韩av无码免费播放| 国产日产欧产系列| www.夜夜操.com| 国产熟人av一二三区| 久久午夜无码鲁丝片直播午夜精品| 伦子系列午睡沙发| 亚洲日产欧| 国产欧美日韩精品丝袜高跟鞋| 久久久无码中文字幕久...| 亚洲无码一区二区三区| 野花韩国免费观看| 大香伊蕉在人线国产免费| 两个人免费视频全集在线观看| 国产精品午夜福利视频234区| 一个人在线观看免费完整版| 少妇性xxxxxxxxx色| 粉嫩大学生无套内射无码卡视频| 国产成a人亚洲精v品无码| 天天爽天天爽夜夜爽毛片| 天天爽天天爽夜夜爽毛片| 国产果冻豆传媒麻婆精东| 国产精品视频啊啊| 久久婷婷久久一区二区三区| 男人使劲躁女人视频免费观看| 亚洲精品av一区二区黑人| 成年日韩片av在线网站| 久久男人av资源网站无码软件| 香蕉伊蕉伊中文视频在线| 国产精品久久精品国产| 亚洲av综合永久无码精品天堂| 国产日产欧产美韩系列麻豆| 精品乱码久久久久久中文字幕| 欧美另类xx肥妇| 浪货趴办公桌~h揉秘书视频| 国产果冻豆传媒麻婆精东| 国产区精品系列在线观看| 亚洲+日产+专区| 天堂а在线中文在线新版| aa片在线观看视频在线播放| 漂亮人妻洗澡被公强 日日躁| 免费120秒体验试看5次|