这是我DLL PAS里的代码
unit add1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
procedure Myadd(x:Integer;y:Integer);stdcall;
implementationprocedure Myadd(x:Integer;y:Integer);stdcall;
begin
ShowMessage(IntToStr(x+y));
end;end.
DLL入口代码
library add;
uses
SysUtils,
Classes,
add1 in 'add1.pas';
exports
Myadd;begin
end.
主程序代码
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, GetErrorPro;type
TForm1 = class(TForm)
edt3: TEdit;
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;procedure Myadd(x:Integer;y:Integer);external 'add.dll';implementation{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);
var
lib:Integer;
addproc:FARPROC;
begin
lib:=LoadLibrary(PChar('add.dll')); if lib <> 0 then
addproc:=GetProcAddress(lib,'Myadd'); if @addproc <> nil then
Myadd(0,0);
ErrorPro;
end;end.GetErrorPro里的代码 主要是解释错误类型,高手可以跳过
unit GetErrorPro;interfaceuses
Windows,Dialogs,SysUtils;procedure ErrorPro;implementationprocedure ErrorPro;
var
dwLastError:DWORD;
begin
dwLastError := GetLastError;
ShowMessage(Format('%s[%d]',[SysErrorMessage(dwLastError ),dwLastError ]));
end;
end.最后为什么出现的结果却不是我想要的结果,是不是什么数据类型有什么问题。麻烦高手讲解下
unit add1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
procedure Myadd(x:Integer;y:Integer);stdcall;
implementationprocedure Myadd(x:Integer;y:Integer);stdcall;
begin
ShowMessage(IntToStr(x+y));
end;end.
DLL入口代码
library add;
uses
SysUtils,
Classes,
add1 in 'add1.pas';
exports
Myadd;begin
end.
主程序代码
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, GetErrorPro;type
TForm1 = class(TForm)
edt3: TEdit;
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;procedure Myadd(x:Integer;y:Integer);external 'add.dll';implementation{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);
var
lib:Integer;
addproc:FARPROC;
begin
lib:=LoadLibrary(PChar('add.dll')); if lib <> 0 then
addproc:=GetProcAddress(lib,'Myadd'); if @addproc <> nil then
Myadd(0,0);
ErrorPro;
end;end.GetErrorPro里的代码 主要是解释错误类型,高手可以跳过
unit GetErrorPro;interfaceuses
Windows,Dialogs,SysUtils;procedure ErrorPro;implementationprocedure ErrorPro;
var
dwLastError:DWORD;
begin
dwLastError := GetLastError;
ShowMessage(Format('%s[%d]',[SysErrorMessage(dwLastError ),dwLastError ]));
end;
end.最后为什么出现的结果却不是我想要的结果,是不是什么数据类型有什么问题。麻烦高手讲解下
解决方案 »
- 急!!!怎么创建能当容器用的ActiveX控件啊
- NMudp问题
- 用Action:= caFree释放窗体,总是出错
- TOOLBAR不总是自动换行问题!!急
- dbcombobox1.items问题
- 摩托遇到怪事~~决定研究一下~~有兴趣看看拉~~
- 哪位朋友有SplashForm->LoginForm->MDIForm->ChildForm的程序段贴出来给我看看好吗?我将万分感激。在此献上100分了表谢意。
- 我使了两年的qq号被盗了,我只有这一个号呀,怎么办?
- 判断平面之间两点的距离问题
- 旧问题解决了,新的问题又产生了,gzmhero(hihihi):进来一下,好吗?
- delphi 连 visual foxpro 数据库时如何不选择有删除标记的记录?
- 语音卡开发的问题
改成
msg := SysErrorMessage(i);
if msg <> '' then Memo1.Lines.Add(Format('%d: %s', [i,msg]
试试
后面加上stdcall