如何得到最小的DLL文件(小于114K)(10分)

  • 主题发起人 主题发起人 运通
  • 开始时间 开始时间

运通

Unregistered / Unconfirmed
GUEST, unregistred user!
是不是DELPHI做的DLL最小114k?
 
用api可以写几十k的
 
去uses中的一些项,可以做到几十K。
 
我将所有的use都去掉了,哈哈,没有任何函数!
不知道这是是不是最小的16,896字节[:D][:D][:D]
 
哦?不过我怎么知道那些去的,那些去不得呢?
 
你去掉以后程序编译不通过就是不能去的了,否则,可以大杀无误!
注意,一个一个的删。
 
用处不大,如果你use 了 forms 这个单元,至少也得100多k
除非只用到 Windows, Messages 才有可能小一点
 
或者用ASPACK等,压缩一下了,可以减少到1/3左右。。[:)]
 
有什么意义吗? 我手头有一个DLL 只有3072字节。你可以看看它的代码,什么用也没有,却是一个
真正的DLL。
.386
.model flat,stdcall
option casemap:none
include /masm32/include/windows.inc
include /masm32/include/user32.inc
include /masm32/include/kernel32.inc
includelib /masm32/lib/user32.lib
includelib /masm32/lib/kernel32.lib

.data
AppName db "DLL Skeleton",0
HelloMsg db "这是DLL 里的输出函数,外部程序在调用它。",0
LoadMsg db "系统在装载DLL。。。",13,"响应reason值DLL_PROCESS_DETACH",13,"----注释",0
UnloadMsg db "系统在卸载DLL",13,"DLL作出响应。",13,"响应reason值DLL_PROCESS_DETACH",0
ThreadCreated db "A thread is created in this process",13,"响应reason值DLL_THREAD_ATTACH",0
ThreadDestroyed db "A thread is destroyed in this process",13,"响应reason值DLL_THREAD_DEATTACH",0
.code
DllEntry proc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD
.if reason==DLL_PROCESS_ATTACH
invoke MessageBox,NULL,addr LoadMsg,addr AppName,MB_OK
.elseif reason==DLL_PROCESS_DETACH
invoke MessageBox,NULL,addr UnloadMsg,addr AppName,MB_OK
.elseif reason==DLL_THREAD_ATTACH
invoke MessageBox,NULL,addr ThreadCreated,addr AppName,MB_OK
.else ; DLL_THREAD_DETACH
invoke MessageBox,NULL,addr ThreadDestroyed,addr AppName,MB_OK
.endif
mov eax,TRUE
ret
DllEntry Endp

TestHello proc
invoke MessageBox,NULL,addr HelloMsg,addr AppName,MB_OK
ret
TestHello endp
End DllEntry
 
to CJF:
我记得DLL用ASPACK压缩的话会出一些问题,没有遇到过吗?
 
现在硬件发展速度这么快,对这些要求可以不那么苛刻,如果不是实时的。
 
接受答案了.
 
后退
顶部