为嵌入式和静态链接的Lua运行时捆绑其他Lua库

时间:2012-02-12 00:39:53

标签: lua

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

怎么做?

1 个答案:

答案 0 :(得分:3)

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

所有Lua模块DLL都导出luaopen_*形式的一个或多个函数,其中*是要加载的模块的名称。此函数可能会使用declspec()符号进行修饰。通常,表示法是通过预处理器宏完成的,但可能不是。无论哪种方式,将其删除,将其转换为正常的函数声明。

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