起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: dragonsoft

如何导入dll函数库?**

[复制链接]
发表于 2007-10-22 10:53:48 | 显示全部楼层
我找到问题了
请楼主仔细看看Delphi中的代码  demoapi中的init
再看看 unttlb中的init_dll看看有什么区别就知道了
两个就没有调同一个函数

这是我在平台上中运行的例子

1.png

29.13 KB, 下载次数: 227

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-22 12:31:47 | 显示全部楼层
平台代码

messagecode.txt

3.52 KB, 下载次数: 121

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-22 12:49:00 | 显示全部楼层
还是不明白。要怎么修改呢?
我看的这两个是一个函数啊。
function Init_dll(const ip: pchar;
                     const username: pchar;
                     const password: pchar;
                     const db: pchar;
                     const apiCode: pchar
                     ): integer; stdcall;   external 'ImApi.dll' name 'init'  ;


    TInit = function(const ip: pchar;
                     const username: pchar;
                     const password: pchar;
                     const db: pchar;
                     const apiCode: pchar
                     ): integer; stdcall;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-22 15:51:52 | 显示全部楼层
顶一下,紧急啊
回复 支持 反对

使用道具 举报

发表于 2007-10-22 16:35:20 | 显示全部楼层
在Delphi中,先看看DemoAPI文件
         // 得到函数入口地址
        init := GetProcAddress(DllHandle, PChar('initWithDB'));
这里用的是ImApi.dll的initWithDB函数

在看看导入平台使用的untTLB.pas文件
function Init_dll(const ip: pchar;
                     const username: pchar;
                     const password: pchar;
                     const db: pchar;
                     const apiCode: pchar
                     ): integer; stdcall;   external 'ImApi.dll' name 'init'  ;
这里用的是ImApi.dll的init函数

两个都不是用的一个函数,当然出现一个正确一个出错了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-22 21:12:36 | 显示全部楼层
我修改了tlb文件,不过还是不行。
x3平台中引入bpl会出错,错误见附件。
修改后的tlb2,以及重新生成的smdll和pkgsm.bpl见附件包中。

麻烦再看看要怎么修改? 谢谢

tlb2.rar

50.72 KB, 下载次数: 132

回复 支持 反对

使用道具 举报

发表于 2007-10-23 08:27:02 | 显示全部楼层
你试试我导入的文件

1.rar

6.03 KB, 下载次数: 133

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-23 09:24:34 | 显示全部楼层
to alang;
我在x3中引入你给的bpl后,还是跟我原来一样的错误。
我想是不是IMAPI.dll这个文件要放哪啊? 我是放在 developer/lib下了,是不是要引用或是什么的?
回复 支持 反对

使用道具 举报

发表于 2007-10-23 09:36:52 | 显示全部楼层
IMAPI.dll放在windows\system32目录
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-23 09:45:34 | 显示全部楼层
IMAPI.dll放在windows\system32目录
==还是没用。 跟原来一样的错误。
打开studio,出现的是 cann't locate initwithdb in imapi.dll...  还有load pkgsm error什么的。(跟原来的错误是一样的)
引入bpl时出现原来的错误。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-29 20:08 , Processed in 0.044047 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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