起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1209|回复: 11

【搞定】如何导入dll函数库?按手册导入不成功。**

[复制链接]
发表于 2007-8-7 09:18:03 | 显示全部楼层 |阅读模式
附件是delphi中调用dll的代码以及2个dll

我的studio版本:2809

按照“如何在Business 3中引入外部控件.pdf”中导入dll函数库的方法导入不行,麻烦看看如何才能正确导入? 谢谢

ImApi_delphi.rar

494.36 KB, 下载次数: 143

回复

使用道具 举报

发表于 2007-8-7 10:38:19 | 显示全部楼层
重新封装一下就可以。
我是在2809上做的。

x3.rar

179.42 KB, 下载次数: 149

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-7 13:16:14 | 显示全部楼层
谢谢 可以导入了,但能说明下怎么用dll里的函数吗?

我这样写不行,手册里的是C#的也不适用。
var  DllHandle: THandle;
DllHandle := LoadLibrary(Pchar('smdll.dll'));


还有里面的函数原型是:
    TApiReceiveMO = function  (pMoBODY: pMO_BODY;
                               const retSize: integer
                               ): integer; stdcall;

pMO_BODY 这个是指针类型(pRPT_BODY = ^TRPT_BODY;) 可以直接使用吗?
回复 支持 反对

使用道具 举报

发表于 2007-8-7 14:01:58 | 显示全部楼层
1、不用这样写
直接创建TIMAPI对象,调用它的方法去收发短信就可以了

2、平台不支持指针
你可以改造一下x3.rar中的封装单元
修改TImApi.ApiReceiveMO方法,传入的参数改为record,在方法的实现部分调用dll函数时,再传指针
回复 支持 反对

使用道具 举报

发表于 2007-8-7 14:14:12 | 显示全部楼层
修改过的例子:

x3.rar

183.27 KB, 下载次数: 137

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-7 14:29:46 | 显示全部楼层
1. 还是不行
var a:TIMAPI ;
a:=TIMAPI.create();

编译错误:
[´íÎó]Biz:\DDB\CSY\ZYJ1.Library.pas(20, 7): Undeclared identifier "TIMAPI"
[´íÎó]Biz:\DDB\CSY\ZYJ1.Library.pas(22, 3): Undeclared identifier "a"

需要引入什么吗? 我在工具-选项里引入了 smdll.dll了
回复 支持 反对

使用道具 举报

发表于 2007-8-7 14:35:35 | 显示全部楼层
uses
  SMDLL ;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-7 16:26:53 | 显示全部楼层
谢谢,可以用函数了。
最后再问个:
2、平台不支持指针
你可以改造一下x3.rar中的封装单元
修改TImApi.ApiReceiveMO方法,传入的参数改为record,在方法的实现部分调用dll函数时,再传指针

==是不是只要在D6+sp2里就可以生成dll了,不用再用平台的Importer来生成dll了?
回复 支持 反对

使用道具 举报

发表于 2007-8-7 16:57:44 | 显示全部楼层
不行,平台的dll是为了平台和您的自定义组件交互用的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-7 17:40:28 | 显示全部楼层
谢谢
那麻烦先结帖吧。
因为现在还不用到指针的函数,如果到时要用再重新导入好了。
到时有问题的话再麻烦
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-23 04:04 , Processed in 0.054956 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表