首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

pb调用外部API完成后报错,该如何处理

2012-02-12 
pb调用外部API完成后报错手册上的原型说明:函数定义:intCopyToPDA(char* strPC)功能:将数据文件从操作人员

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重新包装一下

热点排行