社区
PowerBuilder
帖子详情
问个大菜问题,调用VC写的DLL时参数是结构体,这个结构体试怎么弄的?
hamzsy
2008-03-25 10:40:28
由于写了动态库给别人用,在DELPHI里调试通过了,现在再调PB的。对PB一窍不通,网上也没找到具体资料,PB的资料好少啊。请您指点一下,不胜感谢。
1、结构体在哪里声明,语法是什么样的?
2、如何做为参数传给动态库?能把数值带回来么?
最好能有可以编译通过的例子,再次大感谢
...全文
159
11
打赏
收藏
问个大菜问题,调用VC写的DLL时参数是结构体,这个结构体试怎么弄的?
由于写了动态库给别人用,在DELPHI里调试通过了,现在再调PB的。对PB一窍不通,网上也没找到具体资料,PB的资料好少啊。请您指点一下,不胜感谢。 1、结构体在哪里声明,语法是什么样的? 2、如何做为参数传给动态库?能把数值带回来么? 最好能有可以编译通过的例子,再次大感谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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形式调用
LabVIEW
调用
DLL
传递
结构体
参数
LabVIEW 中
调用
动态库接口
时
,如果是值传递的
结构体
,可以根据字段拆解为多个
参数
;如果
参数
为
结构体
指针,可用簇(Cluster)来匹配,其内存连续相当于单字节对齐。
C#
调用
C++生成的
dll
,
参数
有
结构体
数组
废话少说,只上程序。 C++生成
dll
程序: /* 实现功能:将一个图片中,所在行的像素值,按照一定的间隔(列数),将对应点的像素值提取出来。 */ #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/core/core.hpp" #include #
【
DLL
动态链接库】labview
调用
DLL
动态链接库
参数
是
结构体
数组/字符串数组
labview
调用
动态库的
时
候,解析动态中的传递的指针,包括
结构体
数组,由字符串组成的数组。 动态库内容 #pragma pack(1)//
结构体
对齐方式,和后面labview中的跳转距离有关 struct MyStruct { int a; double b; const char *c; }; #pragma pack(pop) struct MyStruct ReturningAValue_ComplexStruct(void) { int i; stru...
(原创)VB
调用
DLL
(
VC
)使用
结构体
参数
时
的内存对齐及分配的
问题
.
VB
调用
DLL
(
VC
)使用
结构体
参数
时
的内存对齐及分配的
问题
.结构内存对齐的相关说明:第一: 首先要先计算结构中成员对齐:(
VC
编译器默认的一般是8字节对齐)用以来分配成员空间及偏移地址。
结构体
成员的对齐的取值来就是是用这个成员本身的大小和#pragma pack(push,n)中的n中较小的数对齐,例如如果成员大小为2,而你指定的对齐方式是4,则该成员按2对齐;注意是每个成员
C#
调用
C++
写
的
dll
,包含
结构体
转换和C#动态
调用
dll
(头文件转换为类)
C#
调用
C++
写
的
dll
,包含
结构体
转换和C#动态
调用
dll
2008年08月19日 星期二 17:13 这段
时
间用C++给客户做了一个通讯的
dll
。但客户是用C#的,所以研究了下C#,把C++的头文件,改
写
成C#的。主要是转换了
结构体
的定义,
dll
函数的
调用
,C#中的
dll
的动态
调用
,C++和C#之间的
时
间变量的传递。现在和大家分享一下。 C++的头文件: #pr
PowerBuilder
1,108
社区成员
66,453
社区内容
发帖
与我相关
我的任务
PowerBuilder
PowerBuilder 相关问题讨论
复制链接
扫一扫
分享
社区描述
PowerBuilder 相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章