首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Lua内部获取Lua状态,以便可以将其传递回C

从Lua内部获取Lua状态,以便可以将其传递回C
EN

Stack Overflow用户
提问于 2010-09-07 22:12:51
回答 2查看 1.7K关注 0票数 0

我能够从Lua中加载从C源代码创建的DLL。所以我希望能够做的是将当前的Lua状态从Lua传递到加载的DLL。

基本上,我使用的是一个使用Lua的游戏引擎。所述游戏引擎的场景编辑器创建Lua状态并调用Lua脚本,我知道它对其调用的所有脚本都使用1 lua状态。因此,我认为状态是从这些lua脚本本身中获知的。在这些Lua脚本中,我希望加载自己的DLL并将此状态传递给该DLL,这样我的C++代码就可以使用该lua状态从相同的lua脚本中调用lua函数,并且处于相同的状态。这有意义吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-07 22:24:29

我想我遗漏了一些明显的东西(这对我来说并不奇怪--我根本不是Lua专家)。

但是如果你调用package.loadlib,你得到的函数句柄将会被Lua本身的状态调用,不是吗?请参阅the CFunction prototype

票数 4
EN

Stack Overflow用户

发布于 2010-09-08 02:53:50

把你的动态链接库写成一个用C。PiL has a description实现的普通的Lua模块,但是它加起来就是在动态链接库的名字后面命名一个导出的函数,这样普通的require函数就可以加载它。要获得由require "mylib"加载的库,您可以使用导出的函数luaopen_mylib()创建mylib.dll,该函数创建一个表,其中包含您希望能够使用的所有方法,并返回该表。该函数以及它创建的所有其他方法在每次调用时都会传递当前的Lua状态。

如果您的引擎不允许在脚本中使用require,那么它也不太可能允许使用package.loadlib,并且您可能根本无法加载您的DLL。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3659426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档