调用vc的dll的这个函数出错,如何解决??请教!

lonking 2005-01-17 12:33:52
vc中函数定义 int Em_GetICExists( unsigned int Hw,unsigned char *existsFlag);

vc中调用例程:
int rv;
unsigned int DEVICETYPE
unsigned char ICExistsFlag;
....
rv = Em_GetICExists(DEVICETYPE,(unsigned char *)&ICExistsFlag)
....

我在pb中调用:
FUNCTION int Em_GetICExists( uint Hw, ref string existsFlag) LIBRARY "ic_lib.dll"

脚本:
int rv
string vsIcExt
rv = Em_GetICExists(3, ref vsIcExt)

错误提示如下:
---------------------------
PowerBuilder Application Execution Error (R0042)
---------------------------
Application terminated.

Error: Specified argument type differs from required argument type at runtime in DLL function daic_geticexists.
(invalid stack pointer on return from function call) at line 4 in clicked event of object cb_1 of w_da_test.
---------------------------


请问高手如何解决???
...全文
155 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyqiqi 2005-01-22
  • 打赏
  • 举报
回复
我现在也遇到这样的问题,是顾显的DLL,我调用的时候报楼主同样的错误,正不知道为什么呢。
C里面是这样写的
void iniCOM(CString ComName,int BaudRates,int Parity,int ByteSize,int StopBits)
qiushuiyingying 2005-01-21
  • 打赏
  • 举报
回复
是不是在vc里写函数时没有显示的用_stdcall调用方式啊:)
试试这样:
int _stdcall Em_GetICExists( unsigned int Hw,unsigned char *existsFlag);
luotitan 2005-01-17
  • 打赏
  • 举报
回复
试一下,没调试

FUNCTION int Em_GetICExists( long Hw, ref char existsFlag[]) LIBRARY "ic_lib.dll"
char vsIcExt[]

rv = Em_GetICExists(3, ref vsIcExt[])
progrose 2005-01-17
  • 打赏
  • 举报
回复
应该是在pb中没有指针(char *PIN)的概念, 修改dll中的函数, 再试试
balloonman2002 2005-01-17
  • 打赏
  • 举报
回复
试试这样:

FUNCTION int Em_GetICExists( uint Hw, ref char ICExistsFlag[]) LIBRARY "ic_lib.dll"

调用:

int rv
Char ICExistsFlag[]

rv = Em_GetICExists(3, ICExistsFlag)
WorldMobile 2005-01-17
  • 打赏
  • 举报
回复
第一种方法:你把VC里的unsigned char *PIN 改成unsigned string *PIN
然后在PB里这样声明
FUNCTION int Em_ChkUsrPIN(uint Hw, ref string PIN ) LIBRARY "ic_lib.dll"

再一种方法:你把PB里的声明改为
FUNCTION int Em_ChkUsrPIN(uint Hw, ref char PIN[] ) LIBRARY "ic_lib.dll"
然后在PB里调用再试试

如果还不行的话,建议你把VC里的参数改掉,别这么用了
li_d_s 2005-01-17
  • 打赏
  • 举报
回复
按楼上说的做。
呵呵,实在不行,自己用vc再把dll包装一次嘛,快的很

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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