【问题标题】:Bundling additional Lua libraries for embedded and statically linked Lua runtime为嵌入式和静态链接的 Lua 运行时捆绑额外的 Lua 库
【发布时间】:2012-03-03 23:05:17
【问题描述】:

我通过静态链接将 Lua 嵌入到我的项目中的 Win32 上(不,我无法切换到 DLL)。我想捆绑更多使用本机代码的 Lua 扩展 - 而不仅仅是纯 .lua 文件。具体来说,我想将Steve Donovan's winapi 捆绑为一些lua 文件和一些.c 文件。

怎么做?

【问题讨论】:

    标签: lua


    【解决方案1】:

    你需要做两件事。首先,您必须将 Lua DLL 项目编译为非 DLL 项目。由于它们旨在成为 DLL 模块,因此它们可能不会在其构建系统中对此进行规定。这意味着你必须自己做。摆脱 DLL 主函数和其他专门的 DLL 函数(但请注意它们的作用,确保在重要时复制它)。并确保更改任何尝试将 Lua 包含在动态链接中的 #defines。

    所有 Lua 模块 DLL 都导出一个或多个 luaopen_* 形式的函数,其中 * 是要加载的模块的名称。这个函数可能会用declspec() 符号装饰。通常,符号是通过预处理器宏完成的,但可能不是。不管怎样,删除它,把它变成一个普通的函数声明。

    现在,一旦您创建了 lua_State 对象,只需使用您的 lua_State 调用该 luaopen_* 函数即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 2021-07-10
      • 2015-04-05
      • 2015-07-20
      • 1970-01-01
      • 2016-02-29
      • 2015-05-12
      相关资源
      最近更新 更多