手册上的原型说明:
函数定义: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重新包装一下