代码之家  ›  专栏  ›  技术社区  ›  user441521

从Lua内部获取Lua状态,这样就可以将其传递回C

  •  0
  • user441521  · 技术社区  · 14 年前

    我可以从Lua中加载从C源代码创建的DLL。所以我想做的是将当前Lua状态从Lua传递到加载的DLL。

    基本上我使用的是一个使用Lua的游戏引擎。该游戏引擎的场景编辑器创建Lua状态并调用Lua脚本,我知道它对所有调用的脚本使用1个Lua状态。所以,我可以想象这个状态是从这些lua脚本本身中知道的。从这些LUA脚本中,我想加载自己的DLL,并将此状态传递给DLL,因此我的C++代码可以使用那个LUA状态从相同的LUA脚本调用LUA函数,并处于相同的状态。这有道理吗?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Mike G.    14 年前

    我想我遗漏了一些明显的东西(这不会让我感到惊讶——我远不是Lua专家)。

    但如果你打电话 package.loadlib ,返回的函数句柄将由Lua本身用state调用,不是吗?看到了吗 the CFunction prototype

        2
  •  3
  •   RBerteig Keith Adler    14 年前

    PiL has a description ,但它加起来是以DLL的名称命名单个导出函数,这样 require require "mylib" ,您创建mylib.dll使用导出函数 luaopen_mylib() 它创建一个包含所有您希望能够使用的方法的表,并返回它。该函数以及它创建的所有其他方法在每次调用时都会传递当前Lua状态。

    如果你的引擎不允许 在脚本中,不太可能允许 package.loadlib