32位DLL如何调用?(100分)

  • 主题发起人 主题发起人 vic
  • 开始时间 开始时间
V

vic

Unregistered / Unconfirmed
GUEST, unregistred user!
在程序中使用32位的DLL(95下)中的函数,
总报"unable to create process"

谁知道是什么问题?
谢谢!
 
把你的程序代码贴出来吧
 
Function Init_com(Port:integer):integer;far; external 'sure32wc';
...
..
var a:integer
begin
A := Init_Com(0); // 初始化串口
...
end
 
在你的静态引入中:

Function Init_com(Port:integer):integer;far; external 'sure32wc';
-----

far 是如何得来,在Delphi中并无该关键字
应是register, pascal, cdecl, stdcall, and safecall 之一吧 !
 
Wangcom:

far 是delphi中的关键字!!

sure32wc是一个DLL库(由一厂商提供),
我看过它带的例子,是win3X下的,是16位的,
我想在95下使用32位的DLL.

我没修改程序,现在程序的错误是:文件project.exe
被连接到丢失的输出sure32wc.dll:init_com上。

who know why? thanks
 
老兄,在win32已没有far,near的概念了,调用外部函数,用这些关键字吧:
stdcall,register,pascal,cdecl,safecall
参数传递的顺序,自己看一下help吧,
如过该dll是c编译的,用stdcall试试.
 
哇!这位老兄一定是连续按了两次按钮,一下子200分都没了。
为了不让这个问题冷场,我就来凑凑热闹吧。

答你这个问题的几位说的对,32位的Delphi已经没有far这个关键字了,
一般你想调用的DLL,要用stdcall。

另外你说有16位的例子,不知道你现在的DLL到底是16位还是32位?
如果还是16位,可不能当作32位DLL调,具体办法可参见“已答问题”
中的一个解答。好象是到深度历险下载控件什么的。
 
我以前调用DLL时也碰到过类似问题,后来发现原因是:
我的 EXE 和 DLL 不在同一目录下,而且 DLL 也不在系统的搜索路径中。

所以你可以试试把 DLL 放到 Windows 的 System 目录下,或者放到你的
EXE 文件所在目录中。

祝你好运。
 
我以前调用DLL时也碰到过类似问题,后来发现原因是:
我的 EXE 和 DLL 不在同一目录下,而且 DLL 也不在系统的搜索路径中。

所以你可以试试把 DLL 放到 Windows 的 System 目录下,或者放到你的
EXE 文件所在目录中。

祝你好运。
 
老兄也在用IC卡啊,这是我的程序中的说明。

function InitCOM(Port: Integer): WORD; stdcall; external 'sure32wc' index 1;

不过我的看法和SunSet一样,你的主要错误是Windows找不到sure32wc.lib
把它放到SYSTEM目录下。
 
老兄也在用IC卡啊,这是我的程序中的说明。

function InitCOM(Port: Integer): WORD; stdcall; external 'sure32wc' index 1;

不过我的看法和SunSet一样,你的主要错误是Windows找不到sure32wc.lib
把它放到SYSTEM目录下。
 
delphi1老兄答对了,:)
我正在用IC卡,DLL库我原本就是放在与.exe相同的目录
下,但就是这个.far, 但" index 1 "一样重要,
没有它,还是报同样的错误。
 
本着对您负责的精神,我帮您删除了重复的问题,还退还了100两银子。
您选择接受delphi1的答案吗?
 
后退
顶部