当前位置: 代码迷 >> PB >> pb调用外部API完成后报错解决办法
  详细解决方案

pb调用外部API完成后报错解决办法

热度:20   发布时间:2016-04-29 07:31:52.0
pb调用外部API完成后报错
手册上的原型说明:
函数定义:int  CopyToPDA(char* strPC)
功能:将数据文件从操作人员所用计算机拷贝到到盘点机,要求将上一次操作文件覆盖。
参数说明:
strToPC:操作人员所用计算机的文件所在路径及文件名,由系统程序指定,此处应赋值为''(0个字符)


我在PB中的声明:
Function int CopyToPDA(Ref string strPC) Library "RapiCopyFile.DLL"
在PB中的代码:
string ls_filename
long li_result

ls_filename = ''

li_result = CopyToPDA(ls_filename)

在调用过程中,函数能完成相应的工作,但API的工作完成后,接着就报错:
Specified argument type differs from required argument type at runtime in DLL function copytopda. (Invalid stack pointer on return from function call) at line......

注:API的开发语言未知,估计是C,据说曾有人在PB环境中正确使用过,未验证真实性。
------解决方案--------------------
c的int对应PB是long

Function long CopyToPDA(Ref string strPC) Library "RapiCopyFile.DLL"

试试
------解决方案--------------------
另外注意


string ls_filename
long li_result

ls_filename = Space (255)//创建一个长度为255的空字符串,避免空间不足

li_result = CopyToPDA(ls_filename)


------解决方案--------------------
应该是API申明方式的问题,没有申明为stdcall,需要调用用户自己清理栈,你还是用他的例子的语言写个dll重新包装一下
  相关解决方案