VB调用C语言的DLL数据类型转换及运行调用约定错误
最近在引用C语言DLL的时候遇到问题,由于只给了一些函数说明,所以碰到了一些问题,向大家请教下
所给的函数说明
1、 void* __stdcall New_Object() //返回:创建的新Panel对象的指针
VB--Public Declare Function New_Object Lib "BS7400Ctl" () As Long 声明是否正确?void * 用什么类型来表示?作为返回值、函数参数有什么区别么?
这样声明后,在vb中能返回一个long型值
2、void __stdcall Delete_Object(void *pObject) //释放Panel对象,pObject 就是上面返回的Panel指针
VB--Public Declare Sub Delete_Object Lib "BS7400Ctl" (ByVal pObject As Long)
用上面的long值作为参数时,在IDE中运行时提示:94错误,调用DLL约定错误,但生成EXE后却没有错误提示,是这么回事?
3、DWORD __stdcall OpenReceiver(void* pObject, TRANDATAPROC pTranFunc, LPVOID pPara)
VB--Public Declare Function OpenReceiver Lib "BS7400Ctl" (ByVal pObject As Long, ByVal pTranFunc As Long, ByVal pPara As Long) As Long
参数:pTranFunc --回调函数;pPara -- 回调函数相关的参数指针。
这里的pPara是个什么鬼?vb中怎么声明
请各位不吝赐教,,分可以再谈
所给的函数说明
1、 void* __stdcall New_Object() //返回:创建的新Panel对象的指针
VB--Public Declare Function New_Object Lib "BS7400Ctl" () As Long 声明是否正确?void * 用什么类型来表示?作为返回值、函数参数有什么区别么?
这样声明后,在vb中能返回一个long型值
2、void __stdcall Delete_Object(void *pObject) //释放Panel对象,pObject 就是上面返回的Panel指针
VB--Public Declare Sub Delete_Object Lib "BS7400Ctl" (ByVal pObject As Long)
用上面的long值作为参数时,在IDE中运行时提示:94错误,调用DLL约定错误,但生成EXE后却没有错误提示,是这么回事?
3、DWORD __stdcall OpenReceiver(void* pObject, TRANDATAPROC pTranFunc, LPVOID pPara)
VB--Public Declare Function OpenReceiver Lib "BS7400Ctl" (ByVal pObject As Long, ByVal pTranFunc As Long, ByVal pPara As Long) As Long
参数:pTranFunc --回调函数;pPara -- 回调函数相关的参数指针。
这里的pPara是个什么鬼?vb中怎么声明
请各位不吝赐教,,分可以再谈
...全文
相关推荐
VB调用动态连接库(dll)
**处理不同数据类型**:C语言和VB的数据类型可能不完全匹配,需要进行适当转换。
VB.NET与C++ DLL交互:VS2010平台调用实例解析
在当今多样化的软件开发环境中,跨语言交互已经成为不可或缺的一部分。特别是当使用Visual Studio 2010进行软件开发时,VB.NET与C++的DLL交互是常见需求。VB.NET以其易用性和快速开发能力,常用于用户界面层和业务逻辑层。与此同时,C++则常用于性能敏感或系统底层的开发。因此,在两者之间进行有效的交互,可以充分利用各自语言的优势,形成互补。
VB和VC 结构体Dll参数传递
总的来说,VB和VC之间的结构体Dll参数传递需要对两者的数据类型、内存布局和调用约定有深入理解,才能有效地实现跨语言的数据交换。
精彩编程与编程技巧-在VB中如何调用C++Builder创建的DLL...
**数据类型转换**:确保C++Builder和VB之间的数据类型匹配,避免类型转换错误导致的调用失败。
P/Invoke Interop Assistant交互助手
避免常见的P/Invoke错误,如内存管理、平台调用约定和错误处理。


API
