【发布时间】:2012-03-03 23:05:17
【问题描述】:
我通过静态链接将 Lua 嵌入到我的项目中的 Win32 上(不,我无法切换到 DLL)。我想捆绑更多使用本机代码的 Lua 扩展 - 而不仅仅是纯 .lua 文件。具体来说,我想将Steve Donovan's winapi 捆绑为一些lua 文件和一些.c 文件。
怎么做?
【问题讨论】:
标签: lua
我通过静态链接将 Lua 嵌入到我的项目中的 Win32 上(不,我无法切换到 DLL)。我想捆绑更多使用本机代码的 Lua 扩展 - 而不仅仅是纯 .lua 文件。具体来说,我想将Steve Donovan's winapi 捆绑为一些lua 文件和一些.c 文件。
怎么做?
【问题讨论】:
标签: lua
你需要做两件事。首先,您必须将 Lua DLL 项目编译为非 DLL 项目。由于它们旨在成为 DLL 模块,因此它们可能不会在其构建系统中对此进行规定。这意味着你必须自己做。摆脱 DLL 主函数和其他专门的 DLL 函数(但请注意它们的作用,确保在重要时复制它)。并确保更改任何尝试将 Lua 包含在动态链接中的 #defines。
所有 Lua 模块 DLL 都导出一个或多个 luaopen_* 形式的函数,其中 * 是要加载的模块的名称。这个函数可能会用declspec() 符号装饰。通常,符号是通过预处理器宏完成的,但可能不是。不管怎样,删除它,把它变成一个普通的函数声明。
现在,一旦您创建了 lua_State 对象,只需使用您的 lua_State 调用该 luaopen_* 函数即可。
【讨论】: