为嵌入式和静态链接的 Lua 运行时捆绑额外的 Lua 库。

我通过静态链接在Win32项目中嵌入了Lua(不,我不能切换到DLL)。我想打包更多使用本机代码的Lua扩展 - 不仅仅是纯.lua文件。具体而言,我想要捆绑[Steve Donovan的winapi](https://github.com/stevedonovan/winapi),它由一些lua文件和一些.c文件组成。

怎么做呢?

原文链接 https://stackoverflow.com/questions/9245394

点赞
stackoverflow用户734069
stackoverflow用户734069

你需要做两件事情。首先,你需要将Lua DLL项目编译成非DLL项目。因为它们被设计为DLL模块,所以它们的构建系统可能没有为此提供选项。这意味着你需要自己来做。摆脱DLL主函数和其他专用DLL函数(但要注意它们的作用,并确保在需要时进行复制)。并确保您更改任何尝试使用动态链接包含Lua的#defines。

所有Lua模块DLL都导出一个或多个形式为luaopen_ *的函数,其中*是要加载的模块的名称。此函数可能会带有declspec()注释。通常,注释是通过预处理器宏完成的,但可能不是。无论哪种方式,都要将其删除,将其转换为普通函数声明。

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

2012-02-12 01:47:00