最新文章:

首页 易语言

支持库

发布时间:2015年06月02日 评论数:抢沙发 阅读数:6228

    本文主要讨论易语言支持库方面的问题.
      
    易语言所编写的程序运行时都需要加载易语言的支持库文件.表面上易语言的非独立编译所生成的EXE程序体积小巧.但事实上若想把软件发布出去给别人的电脑上使用.非独立编译将面临很多的问题.所以实际应用时应全部进行独立编译.
      即使都用独立编译的方式,也不会绝对不出问题.下面对于一些常见的问题与处理方式介绍一些.

     

     

    易语言编写的程序在运行时经常会出现这种错误信息框.这个信息框说明加载易语言核心支持库失败!
    正常的易语言核心支持库文件为 krnln.fnr krnln.fne 前者是独立编译时会被结合在EXE.后者是IDE调试环境时加载的.在易IDE中调试时,加载的就是后者这个支持库文件.
    如果一个易语言程序出现加载不了核心支持库上述的其中一个文件的话,就会出来这个 载入支持库失败 的信息框了.

    非独立编译的易语言程序会先在当前运行目录下尝试加载 krnln.fnr 这个文件,若加载失败,接着会在注册表中获取支持库所在的目录.再尝试从该目录里加载 krnln.fne . 若这次又载入支持库失败的话,就会弹出上面的那个 错误 信息框了.
    [HKEY_CURRENT_USER\Software\FlySky\E\Install]
    "Path"="D:\\e\\lib\\"

    易语言的支持库目录保存所在的注册表项值如上.


     

    对于安装了易语言的机器,一运行 e.exe ,就会把该 e.exe 下的子目录 lib 路径写到上面的这个注册表位置处!
    所以若非独立编译的方式编出来的程序运行出现上述错误时,解决的方式就是把相应的 krnln.fnr EXE放在同一目录下即可,若不想同一目录,就得写入上述的注册表值了..

    独立编译的易语言程序,会先把EXE程序自身中的 krnln.fnr 支持库文件数据,写到 %USERPROFILE%\Local Settings\Temp\ 下的 E_N4\E_4 文件夹里 krnln.fnr 文件.然后再载入它..
    所以独立编译的情况下,一般不太会再出现载入支持库失败的情况了.但这不是绝对的,独立编译在有些情况下也会出现载入支持库失败的状况发生.

     

    比如:
    情况一,  E_N4\E_4 文件夹被其它软件设置成了禁止写入就会导致释放 krnln.fnr 失败.最终载入也失败
    情况二,  若有老版易所编的程序在运行,其释放出来低版本的支持库已在 E_N4\E_4 文件夹里会导致本次易程序释放支持库失败,最终由于支持库新旧不兼容而出错!
    情况三,  注入在其它进程中的DLL出现载入支持库失败.主要原因是其它进程运行目录下不可能会有支持库文件,而目标机器也未必有安装易语言,在注册表中也就没了支持库目录所在的设置了.

    上面的第三种情况一般不会出现,DLL进行注入时,会自动把本易EXE所载入的支持库所在路径写进注册表中.保证了DLL被注入目标进程时能够正常加入支持库文件.

    而情况一,与情况二就不好处理了,如果是自已的电脑,那么可以直接到上述的临时文件夹里 E_N4\E_4 删除即可,我发现有些极度恶劣的小人,不但禁止写 E_N4\E_4 目录,还把该 E_N4\E_4 设成了 隐藏.所以若你在temp临时文件夹 里找不到 E_N4\E_4 ,表忘了打开文件夹选项里的 显示所有文件及文件夹 项试试...

    但对于我们发布的软件,在其它用户的电脑里运行时,出现这种 E_N4\E_4 被禁的情况就不好办了,因为我们不方便叫软件客户也手动去删一次这个 E_N4\E_4 文件夹吧..
    所以最好修改独立编译的EXE中的 E_%X 字符为你要的文件夹名称.这样当你的易编EXE运行时,会把 krnln.fnr 支持库文件数据,写到设置进去的那个文件夹名里.这样就能避免与他人的老版易程序冲突,也能避免某些人的恶意禁写 E_N4\E_4 文件夹情况了.

     

     

    可以使用 UltraEdit 这个十六进制数据编辑软件,打开独立编译的易EXE程序,查找 ASCII 字符串  E_ 在找到的地方,修改之.
    注意上面找到的是 45 5F 25 58 00 00 00 00 共八个字节.文本型数据是以 00 进行结束标记的.所以上面的八个字节,我们最多可以修改其七个字节来设置支持库要释放到的文件夹名称.
    改好新的文件夹名称后,点一下保存,再运行这个EXE看看 %USERPROFILE%\Local Settings\Temp\ 里有没有出来个新的你所设置的文件夹即可 .

二维码加载中...
本文作者:ThinkMany      文章标题: 支持库
本文地址:http://www.thinkmany.com/post/10
版权声明:若无注明,本文皆为“乌龟's Blog”原创,转载请保留文章出处。
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论
    123.16ms