delphi 调用C写的动态库,传入指针型record,传出也一样,但是在返回参数解析时导致我的程序死机

acridin 2016-07-28 10:42:00
delphi 调用C写的动态库,传入指针型record,传出也一样,但是在返回参数解析时导致我的程序死机


AIn= ^Ain;
Ain= record



Bout= ^Bout;
Bout= record

--动态库方法
type
Utrans = procedure(com : integer;Ain: pointer; Bout: pointer);stdcall;


我现在也初始化指针了,用GetMem,FillChar,最后释放FreeMem
但是还是不行,感觉C的动态库把我的传入指针拿走干别的去了,导致我的程序死,不知道我说的对不对,有人知道吗
...全文
994 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
如果 type Utrans = procedure(com : integer;Ain: pointer; Bout: pointer);stdcall; 是文档中给出的调用方法,估计还是你的调用代码有什么问题。
JohnYale 2016-07-29
  • 打赏
  • 举报
回复
in和out的record,在C中和Delphi中是怎么定义的?
  • 打赏
  • 举报
回复
这要看C函数原型。
acridin 2016-07-28
  • 打赏
  • 举报
回复
引用 3 楼 DelphiGuy 的回复:
.h或者文档肯定是有的,要不你怎么知道这: --动态库方法 type Utrans = procedure(com : integer;Ain: pointer; Bout: pointer);stdcall;
有文档啊 就按文档写的
  • 打赏
  • 举报
回复
.h或者文档肯定是有的,要不你怎么知道这: --动态库方法 type Utrans = procedure(com : integer;Ain: pointer; Bout: pointer);stdcall;
acridin 2016-07-28
  • 打赏
  • 举报
回复
引用 1 楼 DelphiGuy 的回复:
这要看C函数原型。
C的代码是别人公司的,不给看啊

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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