当前位置: 游戏平台 > 互联网科技 > 正文

至于Delphi中DLL,BPL等不可能调试的主题素材

时间:2019-11-14 03:04来源:互联网科技
今天,整插件框架的时候,调试的时候,整来整去,发现,无法进入插件DLL进行调试,诧异的蛋疼,相同的框架,以前写的代码,调试一切正常,随意怎么调试都可以,今天换一个项目

今天,整插件框架的时候,调试的时候,整来整去,发现,无法进入插件DLL进行调试,诧异的蛋疼,相同的框架,以前写的代码,调试一切正常,随意怎么调试都可以,今天换一个项目上来,调试居然无法进入到DLL模块中去了。。。。寻找度娘,谷歌一番,多数论调都是神马DLL和exe同一个目录下之类的。甚至还有人说放在不同的目录下之类的。。。。我不知道他们是怎么设置调试成功的,总之,我是怎么整都没成功,最后终于进入到主程序调试加载DLL插件的时候,查看了一下Delphi自身的调试查看的Modules,这个可以在View-->Debug Windows--->Modules下查看。正常情况下,这里显示的界面为:
图片 1,可以看到前

[概述]

抱歉由于上次开源比较匆忙,没有来的及做一个DEMO,里面也有些垃圾的文件没有及时清理。DEMO其实昨天晚上已经调通。相关说明文档今天晚上才说明好,欢迎大家继续关注和交流,和大家一起分享我10多年的管理软件框架开发经验,后续会完善更多相应的有用的插件,供大家直接使用。

,可以看到前面有蓝色小原点的是当前正在运行调试中的模块。然后可以看到在后面还跟有一个模块的路径。这个如果是英文名称,那么这个模块路径是正常的,如果是中文名称,那么这个模块路径则是乱码,妹的,问题,才算是找出来了,这个就是因为Delphi的IDE无法识别正确的模块路径,而导致调试的时候无法正常加载模块的调试信息。由此,咱们今后可要注意一下,就是如果使用插件的时候,切忌使用中文名称,否则是无法识别调试路径的咯。下面是使用中文路径的时候,插件模块加载之后的模块视图如下
图片 2很显然,只

[DEMO图片预览]

图片 3

很显然,只有SeBaidu.exe这个是蓝色点,而俺刚加载的那个插件则显示的是未加载,更奇特的是他后面的路径,看到没,一串乱码。真是蛋疼的Delphi呵。居然宿主的中文路径识别正常,加载的插件中文路径,就识别不正常了!仅以为记,既然IDE有这种BUG,那咱们只有日后绕过了!

[MDI-DEMO-BIN文件说明]

编译好的文件打包存放于根目录下面,文件名为:MDI-DEMO-BIN.zip,采用XE5编译,使用标准控件,其他版本编译myBeanConsole.exe和plugin-demo-form工程就好,记得这两个工程需要带包,beanMananger.dll可以通用。不需要编译。

myBeanConsole.exe
--主控台EXE,包含主窗体

myBeanConsole.config.ini
--配置文件,包含是否使用缓存目录,是否预加载DLL,等配置

demoBeans.plug-ins
-- bean的配置文件,可以多个,有主配置文件指定目录,参考主配置文件说明

beanManager.dll
-- 框架核心DLL文件,由plug-ins-corebeanMananger提供,标志的Windows DLL文件,不需要带包编译,所有Delphi版本可以使用。

rtl190.bpl
vcl190.bpl
--XE5 运行包文件(由于使用XE5编译的)

plug-insplugin_form_demo.dll
-- DEMO DLL,注册了aboutForm插件和demoPluginForm插件

 

[主配置文件说明]

主配置文件文件名: EXE文件名+config.ini,或者app.config.ini

[main]
;加载时插件缓存
;true时copy到临时缓存目录进行加载, false插件目录进行加载
;默认为true值
plug-ins-cache=1

;插件临时目录,支持相对路径(EXE目录的相对路径),绝对路径(c:temp
;默认为plug-ins-cache
plug-ins-cache-path=temp-files

;加载DLL在启动程序的时候
;默认为true
loadOnStartup=0

;加载bean配置文件目录(相对路径(EXE目录的相对路径),绝对路径(c:config*.*)
;没有配置时,直接加载DLL,从DLL中获取PluginID
;<none>时不加载任何DLL插件
beanConfigFiles=*.plug-ins,plug-ins*.plug-ins,beanConfig*.plug-ins

;加载文件时记录日志;
;默认为false, 为true时可以从日志文件(logloadDLL_trace.txt)便于查看到哪个文件加载失败
traceLoadLib=1

编辑:互联网科技 本文来源:至于Delphi中DLL,BPL等不可能调试的主题素材

关键词: