我一直想知道是否可以通过使用它的地址在 C/C++ 中调用 lua 函数。 例如
function print2(arg)
print("Printed: "..arg)
end
print(print2) -- prints what seems like a 64 bit address.
我对 C 和 lua 语言的内部工作原理不是很有经验,所以很抱歉,如果这完全是不可能的。
不,你不能。原因有三:
- 文档说"无法将指针转换回其原始值。 轻 C 函数
- 、C 闭包和 Lua 函数具有不同的内部表示形式,但在打印时看起来都像
function: 0x55664ffe8de0
。 - 即使您使用了一些非公共函数来通过第 1 点,并且知道通过第 2 点是什么样的函数,您仍然会遇到垃圾回收器可以在您获取指针和调用指针之间收集您想要调用的函数的问题。