1

我一直想知道是否可以通过使用它的地址在 C/C++ 中调用 lua 函数。例如,

function print2(arg)
print("Printed: "..arg)
end

print(print2) -- prints what seems like a 64 bit address. 

我对 C 和 lua 语言的内部工作都不是很有经验,如果这完全不可能的话,很抱歉。

4

1 回答 1

0

不,你不能。三个原因:

  1. 文档说“无法将指针转换回其原始值。”
  2. function: 0x55664ffe8de0轻量级 C 函数、C 闭包和 Lua 函数具有不同的内部表示,但都只是打印时的样子。
  3. 即使您使用了一些非公共函数来通过第 1 点,并且知道通过哪种函数可以通过第 2 点,您仍然会遇到垃圾收集器可以在您获取指针之间收集您想要调用的函数的问题当你打电话给它时。
于 2020-06-12T21:07:06.200 回答