DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: snarv
今日帖子: 12
在线用户: 5
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 hongfeng (hongfeng) ★☆☆☆☆ -
盒子活跃会员
2004/3/16 19:37:04
标题:
我请求你的帮助也是为了帮助别人,帮助别人就是对帮助自己的人的最大回报。 浏览:1200
加入我的收藏
楼主: 调用dll的单元文件Unit1.pas
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;
//声明(调用project2.dll文件里的过程SetActiveLanguage)
procedure SetActiveLanguage(LanguageName:string);export;stdcall;external 'project2.dll';

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  //调用过程
  SetActiveLanguage(');
end;

end.

编译生成dll文件的工程文件project2.dpr,它引用了Unit1.pas里的按钮对象button1.

library Project2;
uses
  SysUtils,
  Unit1 in 'Unit1.pas',//引用Unit1.pas
  Classes;
{$R *.res}

procedure SetActiveLanguage(LanguageName:string);export; stdcall;
begin
  //处理Unit1.pas里form1类中的按钮对象
  form1.Button1.Caption:='按钮1';
end;

exports
 SetActiveLanguage;
begin
end.
编译时能通过,生成了Project2.dll和project1.exe文件。运行时出现Access Violation address 0028332E in moudle 'Project2.dll',Read address 00000324错误,请问这是为什么?改为动态调用dll出现同样的错误,为什么?用什么方法把Form1的成员对象(button1)传递给dll。

这个程序的目的是通过点击窗体上的按钮调用dll文件,通过dll的过程SetActiveLanguage将按钮的caption变为按钮1,但是当在dll过程SetActiveLanguage()里设置form1.Button1.Caption:='按钮1';时需要将form1.button传递给dll。由于已经uses Unit1 in 'Unit1.pas',//引用Unit1.pas ,所以本以为能够成功,没想到运行时出错,请高手帮忙解释这是为什么?怎么解决?谢谢!(注:编译能通过)

希望回复此贴的朋友,在回复之前测试一下你的方法,上面的程序已经很完整,而且比较简单,我的目的就是想试验一下如何在文件之间传递类的成员对象,这种情况不单单只在调用DLL时出现问题,在一个单元文件调用另一个单元文件时都会发生。这是一类错误情况,希望朋友们能予以重视。此贴在问题解决时立即结贴。
    我请求你的帮助也是为了帮助别人,帮助别人就是对帮助自己的人的最大回报。
----------------------------------------------
-
作者:
男 xiaojun5460 (西门吹灯) ★☆☆☆☆ -
盒子活跃会员
2004/3/17 7:39:10
1楼: 大哥我也不会,帮你UP!
----------------------------------------------
-相互学习,共同进步!
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行62.5毫秒 RSS