vb调用dll的问题。

NickXuanDeng 2004-11-08 10:08:38
我用vb调用一个用c写的dll,其中,c里面函数的一个参数定义为字符数组,那么我在vb中应该怎样定义呢?
我就是调用这个函数:
extern int _export _stdcall DownLoadProc(int ComPort,
DNLD_PARA DnldPara,
int * percent,
char * phaseMsg,
int dumpflag,
char dumpFileName[260],
int * dumpAddr,
CUST_FLASH_PARA CustFlashPara,
int chkflag);
我在vb里是这样定义的:
Public Declare Function DownLoadProc Lib "downloaddll.dll" (ByVal ComPort As Long, DnldPara As DNLD_PARA, _
ByRef percent As Long, ByRef phaseMsg As String, ByVal dumpflag As Long, ByVal dumpFileName As String, _
ByRef dumpAddr() As Long, CustFlashPara As CUST_FLASH_PARA, ByVal chkflag As Integer) As Integer
可是我调用却会出现错误,请问在哪里有了问题?
...全文
168 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
varnson 2004-11-08
  • 打赏
  • 举报
回复
extern int _export _stdcall DownLoadProc(int ComPort,
DNLD_PARA* DnldPara,
int * percent,
char * phaseMsg,
int dumpflag,
char *dumpFileName,
int * dumpAddr,
CUST_FLASH_PARA* CustFlashPara,
int chkflag);


Public Declare Function DownLoadProc Lib "downloaddll.dll" (ByVal ComPort As Long, Byref DnldPara As DNLD_PARA, _
ByRef percent As Long, ByVal phaseMsg As String, ByVal dumpflag As Long, ByVal dumpFileName As String, _
ByVal dumpAddr As Long, Byref CustFlashPara As CUST_FLASH_PARA, ByVal chkflag As Long) As Integer
结构可用指针传,函数地址用addressof函数取得。
foxegg 2004-11-08
  • 打赏
  • 举报
回复
不要问为什么,反正C里面函数的参数char*,在VB中就是用ByVal的String来对应。
NickXuanDeng 2004-11-08
  • 打赏
  • 举报
回复
那么,如果没有对应的数据类型,我应该怎么样定义才能用呢?
NickXuanDeng 2004-11-08
  • 打赏
  • 举报
回复
那为什么int* 就要用byref呢?
Tiger_Zhao 2004-11-08
  • 打赏
  • 举报
回复
还有 char dumpFileName[260] 没有对应的数据类型
VB 中的数组全是 SafeArray,你查查 MSDN 就明白它们非常不同
Tiger_Zhao 2004-11-08
  • 打赏
  • 举报
回复
char* 是指针,要用 Byval phaseMsg As Long,调用时
Dim strHaseMsg As String
strHasMsg = "..."
DownLoadProc(..., StrPtr(strHasMsg), ...)
NickXuanDeng 2004-11-08
  • 打赏
  • 举报
回复
为什么,那怎么回传值啊?
TechnoFantasy 2004-11-08
  • 打赏
  • 举报
回复
char * phaseMsg 要定义成ByVal 。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧