问个大菜问题,调用VC写的DLL时参数是结构体,这个结构体试怎么弄的?

hamzsy 2008-03-25 10:40:28
由于写了动态库给别人用,在DELPHI里调试通过了,现在再调PB的。对PB一窍不通,网上也没找到具体资料,PB的资料好少啊。请您指点一下,不胜感谢。
1、结构体在哪里声明,语法是什么样的?
2、如何做为参数传给动态库?能把数值带回来么?
最好能有可以编译通过的例子,再次大感谢
...全文
137 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
AFIC 2008-03-27
  • 打赏
  • 举报
回复
int就是对int,你改long干啥,对照下边仔细核对你的数据类型定义
http://www.sybase.com/detail?id=44648
hamzsy 2008-03-27
  • 打赏
  • 举报
回复
不好意思,是我自己没搞对,应该先把声明部分保存再调用。这个算是解决了。
现在新问题又来了,
int类型申请的不对,换成了long

global type sm_param from structure
long index
character sca[16]
character tpa[16]
character tp_pid
character tp_dcs
character tp_scts[16]
character tp_ud[160]
long ud_len
character sm_st
end type


调用 Read_sms(sm,0)

执行后没报错误,但sm_st里的数据有点乱了,不是按我的预期保存数据的,好像有错接了。
其中sm_st数组的第一条记录前面的sca tpa tp_pid tp_dcs tp_scts tp_ud几项对的,从后面的ud_len sm_st就不对了。第二项以后所有数据都是这样给错接乱套了。请问是不是哪里没搞对?
AFIC 2008-03-26
  • 打赏
  • 举报
回复
>>是不是申明在global external function里?

yes

>>我这么写,保存时说语法错误,意思是类型不匹配

拷贝下,贴上来看看
hamzsy 2008-03-26
  • 打赏
  • 举报
回复
动态库里的函数是不是申明在global external function里?
hamzsy 2008-03-26
  • 打赏
  • 举报
回复
我这么写,保存时说语法错误,意思是类型不匹配
leio 2008-03-26
  • 打赏
  • 举报
回复
动态库申明这里,如果就只用50个(或不超过50个),最好写死
function int Read_sms(ref SM_PARAM rec_sm[50], int delFlag ) library "smsdll.dll"


Read_sms(sm_st,0)
AFIC 2008-03-26
  • 打赏
  • 举报
回复
Read_sms(sm_st,0)
I_am_Z 2008-03-25
  • 打赏
  • 举报
回复
new -> pb object -> structure
定义参数成员
保存命名:stru_param

代码中引用时:
stru_param lstru_param

stru_param.成员1 = ??
.
.
.
leio 2008-03-25
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20050526/13/4037146.html#
参考此贴
hamzsy 2008-03-25
  • 打赏
  • 举报
回复
结构体的声明问题解决了,非常感谢大家。再下面的问题就是怎么把地址传到动态库里了

动态库的声明:
function int Read_sms(ref SM_PARAM rec_sm[], int delFlag ) library "smsdll.dll"

结构体的声明就写个VC里的,是为了好表达意思,PB里我已经搞定了:
typedef struct {
int index;
char SCA[16];
char TPA[16];
char TP_PID;
char TP_DCS;
char TP_SCTS[16];
char TP_UD[160];
int UD_Len;
char SM_st;
} SM_PARAM;

在调用函数的地方,声明了一数组
SM_PARAM sm_st[50]

下面调用Read_sms的语句我应该怎么写?
就剩最后一步了,各位再继续帮个忙

解决了立刻给分
AFIC 2008-03-25
  • 打赏
  • 举报
回复
1、结构体在哪里声明,语法是什么样的?

完全图形化操作,不需要写语法

2、如何做为参数传给动态库?能把数值带回来么?

直接参数类型写结构体名,把数值带回来用ref形式调用

1,076

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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