我是菜鸟,不过最近刚发现,vb调用vc需要在vc里面定义如
int _stdcall hello(……){……}
vb声明我是用的
Public Declare Sub hello Lib "test.dll" (……)
test.dll要放到system32下或者当前目录下,某人告诉我说放在当前目录是中不好的做法,具体的我没听明白,我的那个程序就是放在当前目录读取图片老是出问题,搞得我只好给出完整地址,反正是测试,也没考虑移植啊什么的
LONG NET_DVR_StartVoiceCom_MR(LONG lUserID, void(CALLBACK *fVoiceDataCallBack)(LONG lVoiceComHandle,char *pRecvDataBuffer,DWORD )dwBufSize,BYTE byAudioFlag,DWORD dwUser), DWORD dwUser);
这个声明中 LONG lUserID,对应vb中的byval lUserId as long
void(CALLBACK *fVoiceDataCallBack)(LONG lVoiceComHandle,char *pRecvDataBuffer,DWORD ),对应vb中的byval fVoiceDataCallBack as long
可是后面又接了一个dwBuffersize,括号也不匹配
void NET_DVR_ReleaseG722Encoder(void *pEncodeHandle);
declare sub NET_DVR_ReleaseG722Encoder lib "xx.dll" (byval pEncodeHandle as long)
LONG NET_DVR_StartVoiceCom_MR(LONG lUserID, void(CALLBACK *fVoiceDataCallBack)(LONG lVoiceComHandle,char *pRecvDataBuffer,DWORD dwBufSize ,BYTE byAudioFlag,DWORD dwUser), DWORD dwUser);
declare function NET_DVR_StartVoiceCom_MR lib "xx.dll" (byval lUserID as long ,byval fVoiceDataCallBack as long ,byval dwUser as long ) as long
public sub VoiceDataCallBack(byval lVoiceComHandle as long,byval pRecvDataBuffer as string, byval dwBufSize as long,byval byAudioFlag as byte,byval dwUser as long)