lua模块为啥加载不到 lua package.load_Lua

用require函数只能加载一次,因为它的特性是:

1、require函数会搜索目录加载文件

2、require会判断是否文件已经加载避免重复加载同一文件。

而这个特性二,虽然我们可能知道这两个特性,但是潜意识里面常常把这个特性二给忽视掉了.

直到哪天我们需要反复加载同一个lua文件,但是没有实现自己想要效果的时候,才会发现这个特性二的存在感特别强!

也许有的小伙伴,会有疑问,为什么要反复加载啊?加载一次不就能用了么? 当我有一些特殊的需求的时候,就可能会需要反复加载某个lua文件,例如我的文件lua文件动态地改变了,或者一些其他特殊原因.( 又或者在做热更的时候, 有时候需要玩家在不重启游戏的时候就能重新加载到新的文件的话, 就需要重新require一次lua文件了。 那么问题来, 到底怎么才能清除require的lua文件。)

那么,如何实现用require在我特定需求的时候可以反复加载一个lua文件? 答案是:二次加载前加这一句package.loaded[luafile] = nil就ok了 例如我们需要反复地required(‘test.lua’),那么第二次加载时的代码如下:

package.loaded[‘test.lua’] = nil
 required(‘test.lua’)参考资料:
 http://baike.baidu.com/view/8751804.htm?fr=aladdin 关于required函数的特性
  Lua 脚本重启 机制
 http://7301766.blog.163.com/blog/static/144633559201101904135456/ LUA modue require package 区别
  Lua中require、dofile、loadfile的区别-

面试题:如何在修改磁盘中lua文件后 立即生效?

-------------------lua和luajit的区别是什么?1 因此LuaJIT代码的语法和标准Lua的语法没多大区别。LuaJIT和Lua的一个区别是,LuaJIT的运行速度比标准Lua快数十倍,可以说是一个lua的高效率版本。 luajit比lua多了jit的机制,快就快在jit上。

2 git 1、动态编译(dynamic compilation)指的是“在运行时进行编译”;与之相对的是事前编译(ahead-of-time compilation,简称AOT),也叫静态编译(static compilation)。

2、JIT编译(just-in-time compilation)狭义来说是当某段代码即将第一次被执行时进行编译,因而叫“即时编译”。JIT编译是动态编译的一种特例。 (在运行时JIT会把翻译过的机器码保存起来,类似于缓存技术,运行时再遇到这类代码直接可以执行,而不是先解释后执行)


luac文件是经lua编译器翻译后的字节码文件,是二进制码文件.

lua字节码32位和64位是不兼容的,所以如果要用字节码的话,得提供两套。

lua模块为啥加载不到 lua package.load_Lua_02

-------------------------------cocos2dx luajavaBridge 学习笔记

lua模块为啥加载不到 lua package.load_Lua_03

---------------------------------------绑定

参考文章:

lua模块为啥加载不到 lua package.load_加载_04

面试题:C++中how修改lua全局函数