为了账号安全,请及时绑定邮箱和手机立即绑定

我这样写系统却提示没有 lstrcpy 这个函数,不知道要怎么加啊!

我这样写系统却提示没有 lstrcpy 这个函数,不知道要怎么加啊!

C++
炎炎设计 2023-03-02 18:14:48
函数原型DWORD StartSession_v2 (LONG LockCard, LONG Version,LPSTR Server,LPSTR LogUser);用delphi 调用StartSession_v2(software,version,pchar(s),'DllUser');其中 s 是string 形用PB调用的话网上很多人都说这种调用方法Function string startsession_v2(long lockcard,long version,ref string server,ref string loguser)Library "LockDll.Dll"sting ss='192.168.1.1'StartSession_v2(2,9,ref s,'DllUser');但是我写上去程序一直要报错,也不知道什么原因哪位高手能帮下小弟吗?不甚感激谢谢 wforce 的回答。不过源函数是字符型指针,用PB调用直接用string 不行吧。我照你的方法写进去了。但还是要报错的。 youyuan1688 回答的应该是正确答案了,不过我不知道怎么写代码。//server1 = '150.0.1.251'//server2 =space(255)//server=lstrcpy(server2,server1)
查看完整描述

2 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

sting s,ls_user
s='192.168.1.1'
ls_user = 'DllUser'
StartSession_v2(2,9,s,ls_user) 
----
很遗憾,PB不支持指针

查看完整回答
反对 回复 2023-03-06
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

为字符串分配的空间不足,你试试直接用字符数组看看。对于一般的out成员,在PB中需要先为字符串分配空间,一般也就是用space(255)这样来做,但你这个是in out的,字符串可能比较难处理,可选的也就只有数组和blob两个了,用数组的时候用定长255的数组,动态数组还是没有分配空间的 

原来不是这个问题,这个问题有两点,第一你在PB中声明的时候大小写没有注意,这个如果没有alias,这样是不行的,大小写必须和DLL中一致(有alias则 alias for 后面的那个字符串与DLL中的一致),二必须DLL中的函数正常运行才行,否则PB总是报一样的错误的,测试表明,你的LockDll.Dll需要其它DLL的支持才能正常运行。你只要将所有的DLL拷贝到PBt所在的目录,然后这样声明外部函数就成了:Function long StartSession_v2(long lockcard,long version,string server,string loguser) Library "LockDll.Dll" 
都是普通参数使用我就不多少了,因为我没有正确的SQLServer数据库只能得出-53247,也就是FFFF3001,连接SQL出错了

查看完整回答
反对 回复 2023-03-06
  • 2 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信