电脑技术学习

“Not found the kernel library or the kernel library is invalid”何解?

dn001

  首先明确"Not found the kernel library or the kernel library is invalid"的意思是什么?

  其内容是指 “找不到核心库或核心库无效!

   这是 用易语言编译出来的程序出现的一种错误现象.

   那么,就有两种可能性,一种是 核心库缺失,另一种就是核心库无效,具体什么情况,听我慢慢诉来……

  问题①:核心库是什么?

  就是易语言的核心支持库(kernel.fne),主管易语言程序最基本的 操作,如API调用,WIN32组件等等

  问题②:此类问题一般出现在 没有安装易语言的主机上。

  也就是说,没有FNE文件可以调用。

 就是说; 没有把核心库给要运行程序的那台电脑。

  要运行的那台电脑我用WRC代替吧,字很长,比较懒。

  问题③:第一种 支持库缺失的具体情况,以及解决方案:

  刚才说到,WRC上没有安装支持库(支持库实际上是个DLL文件),也就是自身没有支持库,必须得靠外界提供,通过这个支持库来完成一系列操作(就相当于DLL文件调用一样)。
  通过 独立编译后,支持库文件(xx.fne)就被塞进EXE文件中了(作为文件中的一个资源存在),当运行程序的时候,把这个xx.fne释放出来,释放到TEMP(临时)目录中,然后如同调用DLL文件一样使用里面的函数(实际上,FNE支持库只有一个公开的导出函数GetNewInf,这个函数输出支持库的具体内容,多说无益,听懂则听,听不懂也无关紧要)。

  当TEMP文件夹中有FNE支持库的时候,WRC中是不是就有支持库文件了呢?

  那非独立编译 后EXE文件中 并没有被塞进FNE支持库对吧?那么,支持库都没有,让程序怎么运行呢?
  因此,FNE支持库就不被塞进程序中(不作为这个程序的资源存在),而以文件的 形式存在(xx.fne),就相当与程序不全一样。

  程序不全,缺少组件(支持库FNE),提示说“Not found the kernel library or the kernellibrary is invalid就很正常了吧

  

  解决方案也很简单:只要想办法 把支持库文件放到 EXE同目录下,就行了。

  可以是安装易语言,也可以是把支持库COPY下来,也可以到网上单独下载,只要原理懂了,一切都好说。

  问题④:第二种方法 支持库无效 的原因及解决方案:

  如果是独立编译后,那当然也会出现这个问题了,看看OR后面说的是什么?没错,是支持库无效,这种情况通常是在被加壳易语言程序 脱壳后出现的。

  由于脱壳后,破坏了 易格式原体,支持库自然也就无效了。(这个能听懂最好,听不懂无关紧要!)

  还有的种种原因,大多数都是 破坏了易原体,解决办法很复杂。

  这里介绍一中 解决方法:

  祭出EcE(E-code explorer),用 16进制编辑器 分离出原体,再植入PE骨架就行了。

  (这个不是本文的主要问题,一笔掠过,看雪学院上有很多这种文章,。)

  但是EcE的作者monkey 很久就不更新了,猴先生;比我还懒!

  因此这种方法也只是支持4.05以前的版本(也可能往后也兼容,我没有亲身试过,反正 EcE反编译易语言功能是4.05以前的版本才行呢!)

  不过4.05以后的易语言程序,这种情况也相对少见些.

标签: