电竞比分网-中国电竞赛事及体育赛事平台

分享

VB調(diào)用DLL文件

 華燈初放l 2013-02-28
VB默認(rèn)的傳遞方式就是傳指針(ByRef,也就是把變量的地址傳遞給所調(diào)用的函數(shù))。如果要傳值(也就是把變量的值傳遞給所調(diào)用的函數(shù))反要在參數(shù)聲明前加ByVal。
1.如果你傳遞的參數(shù)是普通的數(shù)據(jù)類型,在參數(shù)前什么都不要加就行了。如C語(yǔ)言聲明為:
    void __stdcall MyProc(short * nPara);
    則VB聲明為:
    Declare Function MyProc Lib "MyDll.dll" (nPara As Integer)
    調(diào)用時(shí)同普通函數(shù)。
2.如果C語(yǔ)言中的指針是字符串指針,那么在VB聲明時(shí)需要加上ByVal,這是個(gè)例外。如C語(yǔ)言聲明為:
    void __stdcall MyProc(char * sPara);
    則VB聲明為:
    Declare Function MyProc Lib "MyDll.dll" (ByVal sPara As String)
    調(diào)用時(shí)同普通函數(shù)。
3.如果C語(yǔ)言的指針是數(shù)組指針,則在VB中調(diào)用時(shí)應(yīng)將數(shù)組的首元素傳遞給DLL。如C語(yǔ)言聲明為:
    void __stdcall MyProc(int [] arrPara);
    則VB聲明為:
    Declare Function MyProc Lib "MyDll.dll" (nPara As String)
    調(diào)用時(shí)為MyProc A(0)。
    注意:不能直接傳遞數(shù)組名,因?yàn)槿绻麄鬟f數(shù)組名,VB實(shí)際會(huì)傳一個(gè)復(fù)雜的結(jié)構(gòu)類型給DLL,這對(duì)編寫C語(yǔ)言的DLL來(lái)說(shuō),處理這樣的結(jié)構(gòu)比較麻煩,所以通常都不支持這種方式。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多