只有这些分了,问一个数据类型向vb转换的问题

hangdogj 2004-12-10 10:51:45
在vb中声明一个dll smeidll.dll,函数SubmitAExEx原形如下,标了序号是为了方便查找

'int WINAPI SubmitAExEx(unsigned char OrgTON, 1
' unsigned char OrgNPI,2
' LPCTSTR OrgAddr,3
' unsigned char DestTON,4
'unsigned char DestNPI,5
' LPCTSTR DestAddr,6
' unsigned char PRI,7
'unsigned char RD,8
' unsigned char RP,9
' unsigned char SRR,10
'unsigned char MR,11
' unsigned char DCS,12
' unsigned char PID,13
'LPCTSTR Schedule,14
'LPCTSTR Expire,15
' unsigned long Default_ID,16
'unsigned char UDHI,17
'unsigned long UDLen,18
' LPCTSTR UserData,19
'LPCTSTR ServiceSubType, 20
' unsigned char* byMsgID,21
'unsigned char byPKTotal, 22
'unsigned char byPKNumber, 23
'unsigned char byMsglevel,24
' unsigned char byFeeUserType, 25
' LPCTSTR sSPID,26
'LPCTSTR sFeeType, 27
' LPCTSTR sFeeAddr,28
'LPCTSTR sFeeCode,29
'unsigned char byUserNum,30
' LPCTSTR sDestAddrs,31
'unsigned long* SM_ID,32
'unsigned char* FCS 33)


我在vb中作声明,转了n次,总是提示内存读写错误,vb马上挂掉,请高手帮忙
这是我在vb中的声明


' private Declare Function SubmitAExEx _
Lib "smeidll" (ByVal OrgTON As Byte, _1
'ByVal OrgNPI As Byte, 2
'ByVal OrgAddr As String, _3
'ByVal DestTON As Byte,4
'ByVal DestNPI As Byte, _5
'ByVal DestAddr As String,6
'ByVal PRI As Byte, _7
'ByVal RD As Byte, 8
'ByVal RP As Byte, _9
' ByVal SRR As Byte, 10
'ByVal MR As Byte, _11
'ByVal DCS As Byte, 12
'ByVal PID As Byte, _13
' ByVal Schedule As String, 14
'ByVal Expire As String, _15
' ByVal Default_ID As Long, 16
'ByVal UDHI As Byte, _17
' ByVal UDLen As Long, 18
'ByVal UserData As String, _19
' ByVal sServiceType As String, 20
'ByVal byMsgID As Long, _21
'ByVal byPKTotal As Byte, 22
'ByVal byPKNumber As Byte, _23
'ByVal byMsglevel As Byte, 24
'ByVal byFeeUserType As Byte, _25
'ByVal sSPID As String, 26
'ByVal sFeeType As String, _27
'ByVal sFeeAddr As String, 28
'ByVal sFeeCode As String, _29
'ByVal byUserNum As Byte, 30
'ByVal sDestAddrs As String, _31
'ByRef SM_ID As Long,32
'ByRef FCS As Byte 33 ) As Long

请帮忙指正,谢谢了
...全文
84 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hangdogj 2004-12-13
  • 打赏
  • 举报
回复
up
Zhymax 2004-12-11
  • 打赏
  • 举报
回复
LPCSTR 是用 byval

看看
unsigned char* byMsgID,21 -〉'ByVal byMsgID As Long, _21

'unsigned char* FCS 33 -〉'ByRef FCS As Byte 33
hangdogj 2004-12-11
  • 打赏
  • 举报
回复
在调用的地方用断言对每一个参数检查,看哪个参数错误
------------------------------------------------------
断点可以检查每一个参数吗 ?请问如何做?
hangdogj 2004-12-11
  • 打赏
  • 举报
回复
vb不是默认就是 _stdcall吗
tyzyx 2004-12-10
  • 打赏
  • 举报
回复

然后在调用的地方用断言对每一个参数检查,看哪个参数错误

如果是调用错误,改变一下函数调用为__stdcall
tyzyx 2004-12-10
  • 打赏
  • 举报
回复
改成传址,
hangdogj 2004-12-10
  • 打赏
  • 举报
回复

没人?
hangdogj 2004-12-10
  • 打赏
  • 举报
回复
我从网上找了些资料看过,里面举的例子,都是将lpcstr 以byval……as string 来传的。
例如:http://www.21tx.com/web/asp/wz/37WQN8GJZZZY1NJCHS.shtml

而且我也改成 byref过,问题也没有解决
一条晚起的虫 2004-12-10
  • 打赏
  • 举报
回复
LPCTSTR OrgAddr,3
指针 ,请用byref

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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