以下是《Delphi5 开发人员指南》书中第9章DLL的例子(246页):
//DLL文件:
library DLLEntryLib;
uses
  SysUtils,windows,dialogs,classes;
procedure DLLEntryPoint(dwReason:DWord);
begin
  case dwReason of
    DLL_PROCESS_ATTACH:ShowMessage('Attaching to Dll');
    DLL_PROCESS_DETACH:ShowMessage('Detaching from process');
    DLL_THREAD_ATTACH:messagebeep(0);
    DLL_THREAD_DETACH:messagebeep(0);
  end;
end;
begin
  DllProc:=@dllEntryPoint;
  DLLEntryPoint(DLL_PROCESS_ATTACH);
end.以上从网上搜索的,为什么 DLLEntryPoint(DLL_PROCESS_ATTACH);
在D7 + Win2K 环境下编译通不过???
我想初始化一些东西,然后进程退出的时候释放一些东西?不能这样吗?难道只能写函数让调用者一步一步写,如果忘了就只好让它留在内存中了!?

解决方案 »

  1.   

    [Error] Project1.dpr(126): Undeclared identifier: 'DLLEntryPoint'
      

  2.   

    楼主代码在Delphi 7 + Windows Server 2003 with SP1编译正常
      

  3.   

    倒~~~怎么有时也可以通过,有时就不行~!!!晕~~~
    看来 Delphi 像不合适用来做 Dll ,不能在里面用对象吗?
      

  4.   

    dllproc是一个定义在SysUtils单元中的全局变量,指定一个回调函数的地址,该回调函数由用户编写,由操作系统调用,主要在该函数中分析dll装\卸时用户想进行的操作,格式是procedure DLLEntryPoint(dwReason:DWord);
    .......
    begin
      DllProc:=@dllEntryPoint;//取得回调函数入口地址
      DLLEntryPoint(DLL_PROCESS_ATTACH);//手动调用回调函数
    //error:Undeclared identifier: 'DLLEntryPoint'没有申明的标示符,因为你没有定义过程dllentrypoint,将全局函数定义成procedure DLLEntryPoint(dwReason:DWord);即可end.