我能够从Lua中加载从C源代码创建的DLL。所以我希望能够做的是将当前的Lua状态从Lua传递到加载的DLL。
基本上,我使用的是一个使用Lua的游戏引擎。所述游戏引擎的场景编辑器创建Lua状态并调用Lua脚本,我知道它对其调用的所有脚本都使用1 lua状态。因此,我认为状态是从这些lua脚本本身中获知的。在这些Lua脚本中,我希望加载自己的DLL并将此状态传递给该DLL,这样我的C++代码就可以使用该lua状态从相同的lua脚本中调用lua函数,并且处于相同的状态。这有意义吗?
发布于 2010-09-07 22:24:29
我想我遗漏了一些明显的东西(这对我来说并不奇怪--我根本不是Lua专家)。
但是如果你调用package.loadlib,你得到的函数句柄将会被Lua本身的状态调用,不是吗?请参阅the CFunction prototype
发布于 2010-09-08 02:53:50
把你的动态链接库写成一个用C。PiL has a description实现的普通的Lua模块,但是它加起来就是在动态链接库的名字后面命名一个导出的函数,这样普通的require函数就可以加载它。要获得由require "mylib"加载的库,您可以使用导出的函数luaopen_mylib()创建mylib.dll,该函数创建一个表,其中包含您希望能够使用的所有方法,并返回该表。该函数以及它创建的所有其他方法在每次调用时都会传递当前的Lua状态。
如果您的引擎不允许在脚本中使用require,那么它也不太可能允许使用package.loadlib,并且您可能根本无法加载您的DLL。
https://stackoverflow.com/questions/3659426
复制相似问题