关于DLL的初始化函数和退出函数

warmworm 2005-02-04 04:48:24
做一个DLL
由于里面申请了变量,所以想再退出时释放,但是了好几次不能调用

library CKY95H;

uses
SysUtils,
Classes,
Dialogs,
VoicePlayerThrd in 'VoicePlayerThrd.pas',
VoiceData in 'VoiceData.pas',
PubData in 'PubData.pas',
SysSetting in 'SysSetting.pas',
VoiceDataPhaser in 'VoiceDataPhaser.pas',
Comm in 'Comm.pas',
WavePlayer in 'WavePlayer.pas',
DLLExports in 'DLLExports.pas',
OldFunctions in 'OldFunctions.pas';

{$R *.res}
{$R SOUNDS.RES}
var
pSaveProc: Pointer;

//两个执行不到的函数
procedure MyExitProc;
begin
ShowMessage( 'Exit' );
end;

procedure MyDLLProc( Reason: integer );
begin
ShowMessage( 'DLLProc' );
end;

exports
dsbdll;
begin
ShowMessage( 'init' );//这里能执行

//退出指针
pSaveProc := ExitProc;
ExitProc := @MyExitProc;
DLLProc := @MyDLLProc;
end.

以前用过,都可以,现在怎么不可以了

我使用的
Borland Delphi 6.0
Windows XP + sp1

实在懒得用C重写了,各位大虾帮个忙
...全文
351 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
warmworm 2005-03-18
  • 打赏
  • 举报
回复
使用update即可
delphi6.0的bug
HWHuang 2005-02-04
  • 打赏
  • 举报
回复
学习学习!
warmworm 2005-02-04
  • 打赏
  • 举报
回复
DLLProc已经赋值了

DLL_PROCESS_ATTACH无所谓了,反正用不到,所以没有再进入的时候手工调用
ly_liuyang 2005-02-04
  • 打赏
  • 举报
回复
procedure EntryPointProc(Reason: Integer);
begin
case reason of
DLL_PROCESS_ATTACH:
begin
xxx;
end;
DLL_PROCESS_DETACH:
begin
yyy;
end;
end;
end;

begin
DllProc := @EntryPointProc;
EntryPointProc(DLL_PROCESS_ATTACH);
end.

http://lysoft.7u7.net

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧