咋没个前辈理俺呢
我现在在VB里的dll里定义了以下两个函数:
Public Function mathadd(ByVal a As Long, ByVal b As Long) As Long
mathadd = a + b
End Function
Public Function mathdec(ByVal a As Long, ByVal b As Long) As Long
mathdec = a - b
End Function
在CVI里生成自动化服务器之后函数变为:
HRESULT CVIFUNC math__Class1mathadd (CAObjHandle objectHandle,
ERRORINFO *errorInfo, long a, long b,
long *arg3);
HRESULT CVIFUNC math__Class1mathdec (CAObjHandle objectHandle,
ERRORINFO *errorInfo, long a, long b,
long *arg3);
请问这第三个参数long *arg3是做什么用的?随便定义一个数给它,编译的时候提示句柄返回负值出错,这到底是为什么啊?
注:我已将相应的.fp .h .c文件加到工程里了
DLL与ActiveX两回事,你用的是使用ActiveX的方法。
DLL文件加入到项目中,同时加入H文件,然后就可以直接使用DLL中的函数了。不知道VB是否创建导入库文件,有则加入到项目文件中。另外,CVI中有专门的DLL例程。
我记得VB生成的DLL不是我们所说的标准DLL, 它相当于是一种ActiveX的DLL,而且是个中间文件,当然,我对VB不熟悉,这个只是以前使用的时候遇到过问题,了解了一下,可能不准确
但是CVI中调用DLL和ANSI 调用DLL是一模一样,没有任何区别,所以需要了解的是怎么在C中调用VB的DLL,而不仅仅是在CVI中调用,用这个当关键词搜索应该能得到很多结果