程序静态调用DLL时,怎样处理DLL不存在的情况? ( 积分: 100 )

  • 主题发起人 主题发起人 zuoc
  • 开始时间 开始时间
Z

zuoc

Unregistered / Unconfirmed
GUEST, unregistred user!
做一个通用程序,需要静态调用DLL,当DLL存在时,执行DLL里的函数,当DLL不存在时,不执行函数。但DLL不存在时总要报错,不知道怎么处理才不报错。
 
静态调用应该没办法不报错,如果可以的话,你将DLL作为一个资源打包进EXE中,EXE执行时先判断DLL是否存在,若不存在则将资源中的DLL释放,并再次自动执行EXE
 
在project1.dpr里判断dll的存在行不?
 
报错是加载器报的.你的程序还没有执行.没办法避免的.
 
楼上说的是对的,我今天还在努力的做这件事情,后来没有成功,好像程序没办法进行检测。LZ要是发现好办法了,就要贴出来啊。
 
按wr960204的说法,一个程序是无法实现的,要做成两个程序,一个程序作为引导程序,用来检查程序的完整性,一个是主程序。如果要一个程序的话,把主程序打包到引导程序里。
 
为什么不能动态来调用?
 
除非自己写 pe loader,否则绝对没办法.
 
用existsfiels检查文件,如果为true则载入,否则不载入.
 
自己检查 DLL 是否存在是没有办法了,建议楼主做一个引导程序,由引导程序完成软件的完整性检测,检测关键文件是否存在,还可以把升级程序做在引导程序里面。
 
改用动态加载吧
 
qqjm
能具体点吗?拜托。
 
没有事找事做啊??!!
 
你先加个判断不就得了,判断该路径下dll存在不?
不存在就不执行不就完事了.
静态不行那就用动态,静态有其优点,动态也有其优点,一种方法行不通或很吃力,为什么不换种方法呢,干吗非固执,去钻牛角间呢
 
没有事找事做啊??!!
 
试试看用编译指令不知道行不行?
$IF.....$Endif

只是我的想法。没试过。
 
静态调用DLL时一定要有存在的DLL程序,否则当然会出错。就好比我调用一下方法,当方法不存在时但你要调用就会出错。
你如果是动态调用DLL就可以解决你的问题。
 
可以试试看PEBundle
 
后退
顶部