Eric Tetz

lua-users home
wiki

在发布 CreatingBinaryExtensionModules 后不久,我发现了类似的 BinaryModuleTutorial。然而,该教程没有解决 Lua API 例程 *位于何处* 的问题。如果它们是静态链接到宿主应用程序中,那么扩展就无法使用它们(除非宿主被特意编写成将函数指针传递给 DLL,这是一个超出 'loadlib' 范围的机制)。因此,DLL 必须静态链接到它 *自己副本* 的 Lua API 例程。如果 Lua API 使用了任何静态变量(我不知道它是否使用了),宿主和扩展将拥有单独的副本,情况可能会变得非常糟糕。

然而,由于 BinaryModuleTutorial 中没有提到这个问题,因此 Lua 似乎 *不* 使用任何静态数据,并且那里描述的创建模块实际上是可行的。它只是浪费空间,因为每个扩展模块都包含它自己副本的整个 Lua API。


RecentChanges · preferences
编辑 · 历史
最后编辑于 2003 年 8 月 31 日 上午 11:48 GMT (差异)