VB默認的傳遞方式就是傳指針(ByRef,也就是把變量的地址傳遞給所調(diào)用的函數(shù))。如果要傳值(也就是把變量的值傳遞給所調(diào)用的函數(shù))反要在參數(shù)聲明前加ByVal。
1.如果你傳遞的參數(shù)是普通的數(shù)據(jù)類型,在參數(shù)前什么都不要加就行了。如C語言聲明為:
void__stdcall MyProc(short * nPara);
則VB聲明為:
DeclareFunction MyProc Lib "MyDll.dll" (nPara As Integer)
調(diào)用時同普通函數(shù)。
2.如果C語言中的指針是字符串指針,那么在VB聲明時需要加上ByVal,這是個例外。如C語言聲明為:
void__stdcall MyProc(char * sPara);
則VB聲明為:
DeclareFunction MyProc Lib "MyDll.dll" (ByVal sPara As String)
調(diào)用時同普通函數(shù)。
3.如果C語言的指針是數(shù)組指針,則在VB中調(diào)用時應將數(shù)組的首元素傳遞給DLL。如C語言聲明為:
void__stdcall MyProc(int [] arrPara);
則VB聲明為:
DeclareFunction MyProc Lib "MyDll.dll" (nPara As String)
調(diào)用時為MyProcA(0)。
注意:不能直接傳遞數(shù)組名,因為如果傳遞數(shù)組名,VB實際會傳一個復雜的結(jié)構(gòu)類型給DLL,這對編寫C語言的DLL來說,處理這樣的結(jié)構(gòu)比較麻煩,所以通常都不支持這種方式。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。