Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Windows教程綜合 >> Windows技巧 >> “Not found the kernel library or the kernel library is invalid”何解?

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

日期:2017/2/8 11:31:12      編輯:Windows技巧
 

  首先明確"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以後的易語言程序,這種情況也相對少見些.

Copyright © Windows教程網 All Rights Reserved