如题多谢各位。在线等。
解决方案 »
- 多层开发的作用是什么?
- 关于通过http显示图片问题,具体问题请查看内容,提供思路有分,提供具体方法者另开贴谢分,问题不难
- 运行Fastreport 3.0 时。。报表在showreport 出现 cannot use the same dataset for report.dataset and Band.DataSet
- 关于IdTCPServer不能触发OnDisconnect事件的问题
- 关于socket接收到数据的一个处理方式,有点不太懂,请教
- image1覆盖image2,image1中间为透明可以看到image2,我想把他们合为一张图片,该如何解决?
- spcomm 问题 没有串口设备,大家帮我看看这段代码有没有问题!
- 我有个帖子没人答,100分,快来,前四位每人25!
- 那里可以下载delphi7?
- 急救:如何获取IIS的信息(只要是可行的就给分)
- 初学dll webbrowser 遇到问题,请大牛帮忙?
- 这样的查询如何写?
Initialization里初始化,
Finalization里释放不行吗?
uses
...;
procedure DllMain(Reason: Integer);
begin
case Reason of
DLL_PROCESS_ATTACH: begin
//这里初始化
end; DLL_PROCESS_DETACH: begin
//这里销毁
end;
end;
end;
begin
DLLProc := @DllMain;
end.
在dll的unit里,
Initialization里初始化,
Finalization里释放 这种方法,是怎么书写的?我写了好多种连编译都通不过,特别是dll的文件最后还有begin end的,那么要放到哪里?
SysInit单元的InitLib,DLL_PROCESS_ATTACH等的参数值,实际上是由系统在调用DLL的入口函数时传入的,而并不是程序当中做的,任何一个进程在加载/卸载,任何一个线程调用都会由系统来保证其被调用.procedure _InitLib;
asm
{ -> EAX Inittable }
{ [EBP+8] Hinst }
{ [EBP+12] Reason }
{ [EBP+16] Resvd } MOV EDX,offset Module
CMP dword ptr [EBP+12],DLL_PROCESS_ATTACH
JNE @@notInit PUSH EAX
PUSH EDX
MOV ModuleIsLib,1
MOV ECX,[EBP+8]
MOV HInstance,ECX
MOV [EDX].TLibModule.Instance,ECX
MOV [EDX].TLibModule.CodeInstance,0
MOV [EDX].TLibModule.DataInstance,0
CALL InitializeModule
POP EDX
POP EAX@@notInit:
PUSH DllProc
MOV ECX,offset TlsProc
CALL _StartLib
end;
rtl对dll的初始化就是用dll入口点传入的DLL_PROCESS_ATTACH判断的,dll中begin/end段中的内容就是在DLL_PROCESS_ATTACH时发生的
function CreateObject :Longint; stdcall;
begin
Result := LongInt(Pointer(TXX.Create()));
end;procedure FreeObject(Obj :Longint); stdcall;
begin
TXX(Pointer(Obj)).Free;
end;exports
CreateObject,
FreeObject;beginend;
应该 改成 library xxxx;
uses
...;
procedure DllMain(Reason: Integer);
begin
case Reason of
DLL_PROCESS_ATTACH: begin
//这里初始化
end; DLL_PROCESS_DETACH: begin
//这里销毁
end;
end;
end;
begin
DLLProc := @DllMain;
DllEntryPoint(DLL_PROCESS_ATTACH);//这句要加上的吧
end.